使用Selenium的Chrome驱动程序错误:无法发现打开的页面

时间:2014-01-08 16:48:14

标签: selenium selenium-chromedriver

运行我的Selenium测试时,我收到了与Chrome驱动程序相关的错误消息。错误消息是“无法发现打开的页面。”Selenium测试一直运行到昨晚。问题似乎是在前一天重新启动服务器后开始的。我无法在本地方框上重现此错误。从服务器上的命令行运行Selenium测试会打开Chrome浏览器,但会导致相同的错误。有什么想法吗?

失败的行:

chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(externalDriverPath);

错误消息和堆栈跟踪:

  

无法发现打开的页面(驱动程序信息:   chromedriver = 2.1,platform = Windows NT 6.1 SP1 x86_64)at   OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应   errorResponse)at   OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串   driverCommandToExecute,Dictionary`2参数)at   OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities   desiredCapabilities)   OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor   commandExecutor,ICapabilities desiredCapabilities)at   OpenQA.Selenium.Chrome.ChromeDriver..ctor(字符串   chromeDriverDirectory,ChromeOptions选项)   OpenQA.Selenium.Chrome.ChromeDriver..ctor(字符串   chromeDriverDirectory)在SeleniumTests.BaseTest.SetupBrowsers()

创建ChromeDriver实例时,会出现一个控制台窗口。带有错误的服务器似乎引用了未实现的内容。

来自服务器的ChomeDriver输出错误:

  

在端口2984上启动ChromeDriver(v2.1)   [4700:4292:0108/111503:错误:gpu_info_collector_win.cc(102)]不能   检索一个va盖WinSAT评估。   [4700:4292:0108/111503:错误:chrome_views_delegate.cc(176)] NOT   IMPLEMENTED   [4700:4292:0108/111503:错误:desktop_root_window_host_win.cc(746)] NOT   IMPLEMENT ED [0108/111504:错误:gl_surface_egl.cc(132)] eglInitialize   失败,错误UNKNO WN [0108/111504:ERROR:gl_surface_win.cc(97)]   GLSurfaceEGL :: InitializeOneOff失败。

ChomeDriver从我的电脑输出工作正常:

  

在端口18786上启动ChromeDriver(v2.1)   [884540:883760:0108/114010:错误:gpu_info_collector_win.cc(102)]不能   检索有效的WinSAT评估。   [884992:884996:0108/114010:错误:base_feature_provider.cc(122)]   manifestTypes:一个低温的web_page上下文需要提供一个值   比赛。   [885232:885236:0108/114011:错误:base_feature_provider.cc(122)]   manifestTypes:一个低温的web_page上下文需要提供一个值   比赛。   [884540:883760:0108/114011:错误:base_feature_provider.cc(122)]   manifestTypes:一个低温的web_page上下文需要提供一个值   比赛。 [0108/114011:错误:gl_surface_egl.cc(131)] eglInitialize   失败,错误UNKNO WN [0108/114011:ERROR:gl_surface_win.cc(54)]   GLSurfaceEGL :: InitializeOneOff失败。

8 个答案:

答案 0 :(得分:28)

您使用的是高度过时的ChromeDriver版本。您的第一个停靠点应该是更新它here

我非常怀疑问题是您的服务器上的Chrome已更新,ChromeDriver v2.1不会support任何最新版本的Chrome。

答案 1 :(得分:8)

在此处查看其他可能的解决方案:https://groups.google.com/forum/?hl=en#!topic/selenium-users/gfvfH-YEC48

就我而言,在ChromeOptions中添加--no-sandbox参数解决了这个问题。

答案 2 :(得分:6)

这是一个快速的解决方法,我在挖掘时发现了摆脱这个错误: unknown error: unable to discover open pages

在量角器配置文件中,添加以下内容:

 capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--no-sandbox']
    }   
},

最重要的一行是 - no-sandbox ;添加该行以某种方式消除了该错误。

我不确定它为什么会起作用,但这是我在网上挖掘时发现的一种解决方法。

***********************************截至2016年4月10日更新**** *********

请忽略此部分,因为该解决方法不是正确的解决方法;下面我告诉你问题的实际解决方法;你只有一个过时的chrome驱动程序,并且运行“webdriver-manager update”只会更新到v2.22,所以我将告诉你如何在下面获取v2.24。

  

如果您的 webdriver-manager更新未更新chromedriver,请继续阅读   最新的,即过去的v2.22或截至2016年4月10日的v2.24。

我在与"Unable to discover open pages"的问题相关的几周内失去了我的头发,每次我更新chromedriver时,它会更新为version 2.22 chromedriver,我相信selenium服务器为{ {1}}。 我的问题不是真的与selenium服务器,所以v2.53很好。

v2.53

尽管this chromdriver link显示有2.24的最新版本,Issue was with chromedriver v2.22. 不会获取最新版本,但它只会获取版本2.22的Chrome驱动程序。

  

我是如何解决这个问题的?

检查此链接后,只需运行以下命令,了解要更新的chromedriver版本;例如,我想要v2.24所以我运行了以下命令:

  

webdriver-manager update --versions.chrome 2.24

如果您检查了自己的位置:'webdriver-manager update'

你应该看到那里下载了所需的chromedriver;如果它不在那里,请阅读命令提示日志,它会告诉你它下载了你的chromdriver文件。

希望能帮助别人!

答案 3 :(得分:4)

我遇到了同样的问题,但更新到最新的ChromeDriver(v2.8)并没有为我解决。我在CI服务器(运行64位Win 7的戴尔机器)上运行Selenium。每当服务器“闲置”一段时间时,我就得到了例外。

解决这个问题的方法是在Windows的“电源选项”中将“关闭显示后”设置为“从不”。

答案 4 :(得分:1)

我在Google计算实例上的Docker中使用python运行硒。对我来说,问题在于我的实例没有足够的内存,我的抓取作业会因该错误而失败。将其升级到g1-small可以解决我的问题。

答案 5 :(得分:0)

首先确保您已通过菜单用户界面更新了Chrome浏览器。

然后更新ChromeDriver,here

答案 6 :(得分:0)

由于某些原因,Chrome驱动程序无法解释https流量。如果您将链接更改为http,它将很有效。

答案 7 :(得分:0)

在我的情况下,问题是由于我的一位同事在同一台服务器上同时启动测试而导致的,因此我的Web驱动程序无法访问Chrome可执行文件。如果有人未正确完成其Web驱动程序过程,也会发生这种情况,在这种情况下,您必须手动将其杀死。