运行我的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失败。
答案 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驱动程序过程,也会发生这种情况,在这种情况下,您必须手动将其杀死。