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

Jam*_*ruk 28 selenium selenium-chromedriver

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

失败的行:

chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(externalDriverPath);
Run Code Online (Sandbox Code Playgroud)

错误消息和堆栈跟踪:

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

创建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)]未实现[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:错误:gl_surface_win.cc(54)] GLSurfaceEGL :: InitializeOneOff失败.

Arr*_*ran 29

您使用的是ChromeDriver 的高度过时版本.您的第一个停靠点应该是在这里更新它.

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

  • 谢谢!我将ChromeDriver更新为v2.8.有趣的是,v2.1仅在6个月前发布,在这个不断浏览器更新的新世界中被认为是非常过时的. (4认同)

小智 8

在这里寻找其他可能的解决方案:https://groups.google.com/forum/?hl = en#!topic/selenium-users/gfvfH-YEC48

在我的例子中,将--no-sandbox参数添加到ChromeOptions解决了这个问题.


pel*_*can 6

这是我在挖掘周围以消除该错误时发现的快速解决方法: unknown error: unable to discover open pages

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

 capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--no-sandbox']
    }   
},
Run Code Online (Sandbox Code Playgroud)

最重要的一行是--no-sandbox ; 添加该行以某种方式摆脱该错误.

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

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

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


如果您的webdriver-manager更新未将chromedriver更新为最新版本(即过去的v2.22或更新至v2.24),请继续阅读.

我失去了几个星期绕着我的问题拉我的头发"Unable to discover open pages",每次我更新chromedriver,它会更新version 2.22为chromedriver,我相信selenium服务器v2.53.我的问题不是真的与selenium服务器,所以v2.53很好.

Issue was with chromedriver v2.22. 
Run Code Online (Sandbox Code Playgroud)

虽然这个chromdriver链接显示有2.24的最新版本,'webdriver-manager update'但不会拿起最新版本,它只会获取版本2.22的chrome驱动程序.

我是怎么绕过这个的?

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

webdriver-manager更新--versions.chrome 2.24

如果你检查你的位置: C:\Users\<USER>\AppData\Roaming\npm\node_modules\webdriver-manager\selenium\

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

希望有人帮助!