我正在使用:
我在网站测试期间看到以下异常(这是我的log4net条目):
FATAL2017-01-09 05:03:10 – no such session
(Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)
FATAL2017-01-09 05:03:10 – at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args)
at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object[] args)
我像这样开始我的驱动程序会话:
var options = new ChromeOptions();
options.AddArguments("test-type");
options.AddArgument("incognito"); // works
options.AddArgument("--disable-bundled-ppapi-flash"); // works! this turns off shockwave
options.AddArgument("--disable-extensions"); // works
options.AddArguments("--start-fullscreen");
var driver = new ChromeDriver(options);
driver.Manage().Cookies.DeleteAllCookies();
return driver;
然后我导航到一个新的" Chrome中的标签使用以下命令:
lock (Session.Driver)
{
JavaScriptExecutor jscript = Session.Driver as IJavaScriptExecutor;
jscript.ExecuteScript(string.Format("window.open('{0}', '_blank');", url));
}
在DEBUG
100%的时间内有效。在RELEASE
模式下,我收到上述错误。这使得这个问题难以解决......没有调试器。
我已检查并且会话处于活动状态,并且在输入时,Driver.WindowHandles
中与Chrome中的标签对应的两个句柄可用。我已经使用Console.Writeline()
语句来查看我在Visual Studio调试模式下通常在监视窗口中诊断的变量。
调试时我无法重现此异常。它总是"工作"在调试期间。
关于同一问题,还有5-10篇其他SO帖子。这些问题的答案涉及更新chromedriver.exe(我有最新版本,也尝试过旧版本),或者正在使用不同的技术堆栈。这里一定有别的东西。
备注:
答案 0 :(得分:1)
我发现我必须从Project-> Properties-> Build->(发布配置)中删除“优化代码”设置 - >取消选中“优化代码”。
我不知道为什么“优化代码”设置会导致此问题。
我不能要求信用。我按照this SO post的说明进行了解决方案。见Josh Berke的帖子。
答案 1 :(得分:0)
在多线程中运行ChromeDriver时发现相同的错误。
尝试添加:
ChromeOptions chromeOptions = new ChromeOptions();
.....
chromeOptions.AddArgument("--disable-impl-side-painting"); //it worked for me
.....
var tmp = new ChromeDriver(service, chromeOptions);