我正在测试一个已经启动的CEF应用程序,因此我试图使用DebuggerAddress选项连接到它。
- 浏览器:Microsoft Edge 107.0.1418.24
- 驱动器:msedgedriver 107.0.1418.24
使用的EdgeOptions:
EdgeOptions edgeOptions = new EdgeOptions();
edgeOptions.DebuggerAddress = "localhost:9222";
edgeOptions.AddArguments("window-size=1680x1050");
edgeOptions.AddArguments("no-sandbox");
Driver = new EdgeDriver(edgeOptions);
Driver.Navigate();
MyTest:
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文档,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 = new ChromeOptions();
chromeOptions.AddArguments("window-size=1680x1050");
chromeOptions.AddArguments("no-sandbox");
chromeOptions.DebuggerAddress = "localhost:9222";
Driver = new ChromeDriver(chromeOptions);
Driver.Navigate();
Web驱动程序实例即使在测试完成后也可能在内存中挂起。完成后需要调用Driver.Dispose()
才能关闭所有web驱动程序进程,并终止msedgedriver.exe进程。然后你可以在相同的主机名和端口上启动ChromeDriver。
ChromeDriver也是如此。完成驱动程序后,您需要调用驱动程序上的Dispose()
,以便它正常关闭。如果你在问题中包含了测试的完整代码,我可以更改我的答案,告诉你在哪里调用Dispose()
。
同时,最好使用两个不同的端口。一个用于Edge,另一个用于Chrome。