selenium 使用CEF应用程序中的Selify Edge驱动程序、c#时出现NoSuchElementException

zbsbpyhn  于 2022-11-10  发布在  C#
关注(0)|答案(1)|浏览(220)

我正在测试一个已经启动的CEF应用程序,所以我正在尝试使用DebuggerAddress选项附加到它。

  • 浏览器:Microsoft Edge 107.0.1418.24
  • 驱动程序:msedgeddriver107.0.1418.24

使用的边选项:

EdgeOptions edgeOptions = new EdgeOptions();
edgeOptions.DebuggerAddress = "localhost:9222";
edgeOptions.AddArguments("window-size=1680x1050");
edgeOptions.AddArguments("no-sandbox");
Driver = new EdgeDriver(edgeOptions);
Driver.Navigate();

我的测试:

public void Test()
{
    var item = Driver.FindElement(By.Id("tableItem")); //test fails here
    item.Click();
}

错误消息:

Message: 
OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":"#tableItem"}
(Session info: MicrosoftEdge=107.0.1418.24)

根据CEF documentation,CEF应用程序应该使用ChromeDriver进行测试,但当我尝试时,它给了我以下错误:

Message: 
OpenQA.Selenium.WebDriverException : unknown error: cannot connect to chrome at localhost:9222
from unknown error: unrecognized Chrome version: Edg/107.0.1418.24

使用的ChromeOptions:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("window-size=1680x1050");
chromeOptions.AddArguments("no-sandbox");
chromeOptions.DebuggerAddress = "localhost:9222";
Driver = new ChromeDriver(chromeOptions);
Driver.Navigate();
tv6aics1

tv6aics11#

即使在测试完成后,Web驱动程序示例也可能在内存中挂起。完成后,您需要调用Driver.Dispose()以关闭所有Web驱动程序进程,并终止msedgedriver.exe进程。然后,您可以在相同的主机名和端口上启动ChromeDriver。
ChromeDriver也是如此。您需要在驱动程序上调用Dispose(),这样驱动程序才能正常关闭。如果您在您的问题中包含了测试的完整代码,我可以更改我的答案以向您展示在哪里调用Dispose()
同时,最好使用两个不同的端口。一个端口用于Edge,另一个端口用于Chrome。

相关问题