我在运行Selenium测试时遇到与Chrome驱动程序相关的错误 . 错误消息是“ Unable to Discover Open Pages. ”Selenium测试一直运行到昨晚 . 问题似乎是在前一天重新启动服务器后开始的 . 我无法在本地方框上重现此错误 . 从服务器上的命令行运行Selenium测试会打开Chrome浏览器,但会导致相同的错误 . 有任何想法吗?
Line that is failing:
chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(externalDriverPath);
Error message and stacktrace:
无法在OpenQA.Selenium.Remium.mlenver.Execute的OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应errorResponse)中发现打开的页面(驱动程序信息:chromedriver = 2.1,platform = Windows NT 6.1 SP1 x86_64)(String driverCommandToExecute, OpenQA.Selenium.Chlenium.Chrome.ChromeDriver..ctor(String)中OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)的OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor,ICapabilities desiredCapabilities)中的字典`2参数)在SeleniumTests.BaseTest.SetupBrowsers()的OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory)中的chromeDriverDirectory,ChromeOptions选项)
创建ChromeDriver实例时,会出现一个控制台窗口 . 带错误的服务器似乎引用了未实现的内容 .
ChomeDriver Output From the Server with the Error:
在端口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 Output From My PC which works fine:
在端口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失败 .
6 回答
您使用的是ChromeDriver的高度过时版本 . 您的第一个停靠点应该是更新here .
我非常怀疑问题是您的服务器上的Chrome已更新,而且ChromeDriver v2.1并不适用于任何最新版本的Chrome .
在这里寻找其他可能的解决方案:https://groups.google.com/forum/?hl=en#!topic/selenium-users/gfvfH-YEC48
在我的例子中,向ChromeOptions添加--no-sandbox参数解决了这个问题 .
首先确保您已通过菜单UI更新了Chrome浏览器 .
然后更新ChromeDriver,here .
我有同样的问题,但更新到最新的ChromeDriver(v2.8)并没有解决它 . 我在CI服务器(运行64位Win 7的戴尔机器)上运行Selenium . 每当服务器“闲置”一段时间时,我就得到了例外 .
解决这个问题的方法是在Windows的“电源选项”中将“关闭显示后”设置为“从不” .
出于某种原因,如果您将链接更改为http,Chrome驱动程序无法插入https流量,它将很有效 .
这是我在挖掘周围摆脱错误时发现的一个快速解决方法:
unknown error: unable to discover open pages
在量角器配置文件中,添加以下内容:
最重要的一条是 --no-sandbox ;添加该行以某种方式摆脱该错误 .
我不确定它为什么会起作用,但这是我在网上挖掘时发现的一种解决方法 .
****************************截至2016年4月10日更新 ****************************
请忽略上面的这一部分,因为该解决方法不是一个正确的解决方案;下面我告诉你问题的实际解决方法;你只有一个过时的chrome驱动程序,并且运行“webdriver-manager update”只会更新到v2.22,所以我将告诉你如何在下面获取v2.24 .
我失去了几个星期左右我的头发问题
"Unable to discover open pages"
和每次我更新chromedriver,它会更新到version 2.22
chromedriver,我相信selenium服务器v2.53
. 我的问题不是真的与selenium服务器,所以v2.53很好 .尽管this chromdriver link显示有2.24的最新版本,
'webdriver-manager update'
不会拿起最新版本,它会只获取版本2.22的chrome驱动程序 .检查此链接后,只需运行以下命令,查看要更新的chromedriver版本;例如,我想要v2.24所以我运行以下命令:
如果您检查您的位置:
C:\Users\<USER>\AppData\Roaming\npm\node_modules\webdriver-manager\selenium\
你应该看到那里下载了所需的chromedriver;如果它不在那里,请阅读命令提示日志,它会告诉你它下载了你的chromdriver文件的位置 .
希望有人帮助!