我正在努力使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.
由于这个问题和其他[问题,我试图降级geckodriver的版本,并使用firefox的无头模式:
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。这可能吗 ?怎么检查呢?
谢谢您的帮助
您需要严格 遵守 将在测试框架中使用的 Selenium , GeckoDriver 和 Firefox 版本的要求,并完全删除不需要的二进制文件版本。必须选择最新版本的 GeckoDriver v0.24.0 。
Selenium v4.0.0-alpha-1 和 Selenium v4.0.0-alpha-2 是 Alpha 发行版,在 生产中 必须避免使用。因此,必须选择最新版本的 Selenium v3.141.59 。
对于 GeckoDriver , Selenium 和 Firefox浏览器的 兼容性,您可以找到详细的讨论:给定的Geckodriver版本支持哪些Firefox浏览器版本?
注意 :您不需要安装 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
…会因为不同的原因浮出水面。可能的解决方案可以是以下任意一种:
/usr/local/bin
/usr/lib64/firefox/
正确使用 无头模式 与 GeckoDriver v0.24.0 是:
options.headless = True
xvfb-run如果您MOZ_HEADLESS=1进行如下设置,则不再需要:
xvfb-run
MOZ_HEADLESS=1
$ export MOZ_HEADLESS=1 # this way you only have to set it once
如果您更改了系统路径,请执行 System Reboot 。
始终driver.quit()在tearDown(){}方法内调用以优雅地关闭和销毁 WebDriver 和 Web Client 实例。
driver.quit()
tearDown(){}
您可以在以下位置找到相关的详细讨论: