Selenium ChromeDriver"没有这样的会话"错误

时间:2017-01-10 03:00:19

标签: c# selenium selenium-chromedriver

我正在使用:

  • chromedriver = 2.26.436362
  • Chrome版本55.0.2883.87 m(64位)
  • .Net C#4.6.1 / Visual Studio 2015社区版

我在网站测试期间看到以下异常(这是我的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(我有最新版本,也尝试过旧版本),或者正在使用不同的技术堆栈。这里一定有别的东西。

备注:

  1. 我每次都可以在RELEASE模式下重现此错误。但是在DEBUG模式下它每次都有效(没有错误)。
  2. 我尝试降级为chrome32_53.0.2785.116(我卸载了54版) - 结果没有任何改善。
  3. 我检查了我用于DEBUG的Chrome驱动程序:它与RELEASE期间使用的chromedriver.exe完全相同。 (这使我得出结论,Chrome和Chrome驱动程序都不是罪魁祸首)。

2 个答案:

答案 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);