【问题标题】:RSelenium rsDriver gives error can't kill an exited processRSelenium rsDriver 给出错误 can't kill an exited process
【发布时间】:2019-08-15 07:18:39
【问题描述】:

我正在努力使 RSelenium 在 unix 服务器上工作。它有 Mozilla Firefox 60.6.1,并运行两个命令:

binman::list_versions("geckodriver")
$linux64
[1] "0.22.0" "0.23.0" "0.24.0"

binman::list_versions("seleniumserver")
$generic
[1] "3.141.59"      "4.0.0-alpha-1" "4.0.0-alpha-2"

geckodriver 似乎可用(是吗?)。但是当我尝试启动驱动程序时:

> library(RSelenium)
> rD <- rsDriver(browser = "firefox",
+          extraCapabilities = list(
+            "moz:firefoxOptions" = list(
+              binary = "/usr/lib64/firefox/firefox",
+              args = list('--headless')
+            )
+          ))
...
[1] "Connecting to remote server"

Selenium message:invalid argument: can't kill an exited process
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'login2.cluster', ip: '192.168.100.12', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.5.1.el7.x86_64', java.version: '1.8.0_181'
Driver info: driver.version: unknown
remote stacktrace:

Could not open firefox browser.
Client error message:
         Summary: UnknownError
         Detail: An unknown server-side error occurred while processing the command.
         Further Details: run errorDetails method
Check server log for further details.

来自this question等我尝试降级geckodriver的版本,利用firefox的headless模式:

 rD <- rsDriver(browser = "firefox",
                version = "3.141.59",
                geckover = "0.22.0",
          extraCapabilities = list(
            "moz:firefoxOptions" = list(
              binary = "/usr/lib64/firefox/firefox",
              args = list('--headless')
            )
          ))

但仍然得到同样的错误。 我的怀疑是 geckodriver 实际上没有安装。这可能吗 ?如何检查?

感谢您的帮助

【问题讨论】:

    标签: r selenium firefox geckodriver rselenium


    【解决方案1】:

    您需要严格遵守您对在您的测试框架中使用的 SeleniumGeckoDriverFirefox 版本的确切要求,并删除完全不需要的二进制文件版本。 GeckoDriver v0.24.0 必须是最新版本。

    Selenium v​​4.0.0-alpha-1Selenium v​​4.0.0-alpha-2alpha 版本,必须避免使用 生产使用。所以 Selenium v​​3.141.59 必须是最新版本。

    关于 GeckoDriverSeleniumFirefox 浏览器 的兼容性,您可以在 Which Firefox browser versions supported for given Geckodriver version?

    中找到详细讨论

    注意:您无需安装 GeckoDriver 二进制文件,只需将二进制文件放在所需位置即可。

    所以理想的用法是:

    rD <- rsDriver(browser = "firefox",
            version = "3.141.59",
            geckover = "0.24.0",
          extraCapabilities = list(
            "moz:firefoxOptions" = list(
              binary = "/usr/lib64/firefox/firefox",
              args = list('--headless')
            )
          ))
    

    如果您仍然遇到问题,请按照以下步骤操作。


    此错误消息...

    message:invalid argument: can't kill an exited process
    

    ...可以出于不同的原因浮出水面。可能的解决方案可以是以下任何一种:

    • 确保 GeckoDriver v0.24.0 已下载并放置在您的路径中已经存在的目录中,例如/usr/local/bin
    • 确保 GeckoDriver非 root 用户具有可执行权限。
    • 确保根据您的代码块在 /usr/lib64/firefox/ 目录中安装(强制)firefox (> v57.0) 并且版本兼容。
    • 确保如果您在 无显示的系统上运行 Firefox,则必须使用 headless 模式
    • GeckoDriver v0.24.0headless mode的正确用法是:

      options.headless = True
      
    • 如果您将MOZ_HEADLESS=1 设置如下,则不再需要xvfb-run

      $ export MOZ_HEADLESS=1   # this way you only have to set it once
      
    • 如果您更改了系统路径,请进行系统重启

    • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。
    • 始终以 非 root 用户身份执行您的 @Tests

    参考文献

    您可以在以下位置找到相关的详细讨论:

    【讨论】:

    • 我安装了 Firefox 68.0.2 ,下载了 geckodriver 0.24.0,但我有 Selenium 3.141.0(Google Colab 拒绝安装 3.141.59)。我使用python3.7。错误信息是一样的。由于 Selenium 客户端和 WebDriver 语言绑定(seleniumhq.org/download),我还安装了 Selenium 3.14.0,但没有帮助。
    • @vesszabo 我认为您的用例在很多方面与此用例不同。您可以在各自的讨论中发布评论更新吗?
    • @denis 错过了赏金 :)
    • @DebanjanB 真的很抱歉,我不知道该怎么做,我从上周末开始就离开电脑了,现在我没有机会了
    猜你喜欢
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多