【问题标题】:Chrome Driver Error using Selenium: Unable to Discover Open Pages使用 Selenium 的 Chrome 驱动程序错误:无法发现打开的页面
【发布时间】:2014-01-26 21:47:13
【问题描述】:

我在运行 Selenium 测试时遇到与 Chrome 驱动程序相关的错误。错误消息是“Unable to Discover Open Pages.” Selenium 测试一直运行良好,直到昨晚。问题似乎是在前一天重新启动服务器后开始的。我无法在本地机器上重现此错误。从服务器上的命令行运行 Selenium 测试确实会打开 Chrome 浏览器,但会导致相同的错误。有什么想法吗?

失败的线路:

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

错误消息和堆栈跟踪:

无法发现打开的页面(驱动程序信息: chromedriver=2.1,平台=Windows NT 6.1 SP1 x86_64)在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应 错误响应)在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串 driverCommandToExecute,Dictionary`2 参数)在 OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities 所需能力)在 OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor,ICapabilities 期望能力)在 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:ERROR:gpu_info_collector_win.cc(102)] 不能 检索有效的 WinSAT 评估。 [4700:4292:0108/111503:ERROR:chrome_views_delegate.cc(176)] 不是 实施的 [4700:4292:0108/111503:ERROR:desktop_root_window_host_win.cc(746)] 不是 实施 ED [0108/111504:ERROR: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:ERROR:gpu_info_collector_win.cc(102)] 不能 检索有效的 WinSAT 评估。 [884992:884996:0108/114010:ERROR:base_feature_provider.cc(122)] manifestTypes:允许 web_page 上下文需要提供一个值 比赛。 [885232:885236:0108/114011:ERROR:base_feature_provider.cc(122)] manifestTypes:允许 web_page 上下文需要提供一个值 比赛。 [884540:883760:0108/114011:ERROR: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 失败。

【问题讨论】:

    标签: selenium selenium-chromedriver


    【解决方案1】:

    您正在使用高度过时的 ChromeDriver 版本。你的第一站应该是更新它here

    我高度怀疑问题在于您服务器上的 Chrome 已更新,而 ChromeDriver v2.1 没有 support 任何最新版本的 Chrome。

    【讨论】:

    • 谢谢!我将 ChromeDriver 更新到 v2.8。有趣的是,仅在 6 个月前发布的 v2.1 在这个浏览器不断更新的新世界中被认为已经过时了。
    • +1 +1 我有类似的问题。谁能给我v2.8的链接谢谢
    • 提醒 mac/brew 用户:brew update; brew upgrade chromedriver.
    【解决方案2】:

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

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

    【讨论】:

    • 更新了 ChromeDriver 和 Selenium 驱动程序,甚至将运行用户设置为本地管理员,但最终修复它的是 no-sanbox 选项。
    • 有一个类似的问题,多线程和有限的并行度。出现了这个例外,当第一个线程完成并且下一个线程打开一个新的 chromedriver 时。也由 --no-sandbox 修复 ?
    【解决方案3】:

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

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

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

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

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

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

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


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

    我花了几周的时间来解决"Unable to discover open pages" 的问题,每次我更新 chromedriver 时,chromedriver 都会更新为 version 2.22,我相信 selenium 服务器会更新为 v2.53。 我的问题并不在于 selenium 服务器,所以 v2.53 很好。

    Issue was with chromedriver v2.22. 
    

    尽管this chromdriver link 显示有最新版本的 2.24,'webdriver-manager update' 不会选择最新版本,它只会获取 chrome 驱动程序的 2.22 版本。

    我是怎么解决这个问题的?

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

    webdriver-manager 更新 --versions.chrome 2.24

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

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

    希望对某人有所帮助!

    【讨论】:

    • 我正在使用 ruby​​ Selenium 并使用最新版本chrome 67,chromedriver 2.39)在 Windows 上运行一个无头 chrome 实例。添加“--no-sandbox”参数解决了“无法发现打开的页面”。给我的问题。
    【解决方案4】:

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

    对我来说解决问题的方法是将 Windows 电源选项中的“之后关闭显示”设置为“从不”。

    【讨论】:

      【解决方案5】:

      我在 Google 计算实例上的 Docker 中使用 python 运行 selenium。对我来说,问题是我的实例没有足够的内存,我的抓取工作会因为这个错误而失败。将它升级到 g1-small 为我解决了这个问题。

      【讨论】:

        【解决方案6】:

        首先确保您已通过菜单 UI 更新了 chrome 浏览器。

        然后更新 ChromeDriver,here

        【讨论】:

          【解决方案7】:

          由于某种原因,Chrome 驱动程序无法解释 https 流量。如果您将链接更改为 http,它将很好地工作。

          【讨论】:

            【解决方案8】:

            在我的情况下,问题是由于我的一位同事在同一台服务器上同时开始他的测试,因此我的网络驱动程序无法访问 Chrome 可执行文件。如果有人没有正确完成他的网络驱动程序进程也会发生这种情况,在这种情况下你必须手动杀死它。

            【讨论】:

              猜你喜欢
              • 2017-01-09
              • 1970-01-01
              • 1970-01-01
              • 2021-10-08
              • 2020-07-29
              • 2020-08-05
              • 2017-05-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多