Selenium因Chrome版本32.0.1700.72 m而失败

时间:2014-01-09 00:37:08

标签: c# google-chrome selenium .net-4.5 selenium-chromedriver

Chrome今天早上(2014年1月8日)为我自动更新为“版本32.0.1700.72 m”,现在我的所有自动化测试都无法运行 - 它们会因“System.InvalidOperationException:System.InvalidOperationException:unknown error”而失败:无法立即发现打开的页面。

我正在跑步:

  • Windows 7企业版(SP1)64位
  • Chrome版本32.0.1700.72 m
  • Selenium ChromeDriver v2.2
  • .NET C#

这是我得到的控制台输出:

Starting ChromeDriver (v2.2) on port 26819
[8668:8300:0108/162344:ERROR:chrome_views_delegate.cc(176)] NOT IMPLEMENTED
[8668:8300:0108/162344:ERROR:desktop_root_window_host_win.cc(746)] NOT IMPLEMENTED
[8668:8300:0108/162345:ERROR:desktop_root_window_host_win.cc(746)] NOT IMPLEMENTED

这是我得到的例外:

Class Initialization method LeadManager.Web.UITest.Tests.ViewLeads.PriorityModeTests.ClassInitialize threw exception. System.InvalidOperationException: System.InvalidOperationException: unknown error: unable to discover open pages
  (Driver info: chromedriver=2.2,platform=Windows NT 6.1 SP1 x86_64).
    at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs: line 1012
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs: line 846
   at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs: line 814
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs: line 89
   at OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Chrome\ChromeDriver.cs: line 101
   at UITestFramework.Providers.WebDriverProvider.CreateWebDriver(TestSettings settings) in WebDriverProvider.cs: line 73
   at UITestFramework.Domain.TestSettings..ctor(BrowserType browserType, String baseUrl) in TestSettings.cs: line 69
   at LeadManager.Web.UITest.Tests.SettingsFactory.GetSettings() in SettingsFactory.cs: line 33
   at LeadManager.Web.UITest.Tests.ViewLeads.PriorityModeTests.ClassInitialize(TestContext context) in PriorityModeTests.cs: line 38

因此ChromeDriver构造函数调用失败。

其他人看到同样的问题?谢谢!

4 个答案:

答案 0 :(得分:14)

这在Chrome / Firefox更新时很常见,ChromeDriver / Selenium总是需要赶上。

但是,最新的ChromeDriver应该已经支持Chrome 32了。您的情况是因为您使用的方式已过时ChromeDriver 2.2。请使用最新版本2.8,您可以下载here

否则,如果您需要保留ChromeDriver 2.2,还可以将Chrome降级为旧版本。

答案 1 :(得分:3)

刚刚遇到同样的问题; 并通过将ChromeDriver从2.4更新到2.8

来解决

答案 2 :(得分:2)

对于我们的项目,我们使用npm。我通过删除node_modules \ chromedriver然后运行:

解决了同样的问题
npm install chromedriver

答案 3 :(得分:1)

Chrome更新经常发生,并非所有更新都必须适用于特定版本的chromedriver。通过安装Google gpeditor管理模板来控制并启用Google Chrome更新政策。通过这种方式,您可以根据Chrome和chromedriver的需要控制和测试更新。请注意,最好尽快更新chrome。

WikiHow shows you!

这是我从chrome 27和chromedriver 2.1开始采用的方法。效果很好并保持测试的完整性。