我通过RSelenium
和docker
图片standalone-firefox
使用v 3.11.0
。另外,我在R v 3.4.4
上使用Windows 10 (64-bit)
。
我正面临着一个特殊的问题,似乎是任意发生的。这是我的代码:
# In the Docker Terminal
$ docker run -d -p 4445:4444 selenium/standalone-firefox:3.11.0
# In R
require(RSelenium)
require(XML)
remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
remDr$open()
remDr$navigate("https://www.betvictor.com/")
Sys.sleep(1)
remDr$screenshot(display = TRUE)
产生以下错误:
Selenium message:Failed to decode response from marionette
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
System info: host: '29208ebb0e68', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.89-boot2docker', java.version: '1.8.0_162'
Driver info: driver.version: unknown
Error: Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
class: org.openqa.selenium.WebDriverException
Further Details: run errorDetails method
我做了一些关于这个主题的研究:
2.53.0
或使用Chrome可以解决问题。但是,我尝试使用standalone-chrome:3.11.0
但remDr$open()
然后使用Selenium message:Unable to create new service: GeckoDriverService
。
至于2.引用(RSelenium
)文档:“[包]为Selenium 2.0 WebDriver提供一组R绑定”,这可能解释了为什么首先出现错误
有没有办法解决这个问题,例如是否可以更新RSelenium
包,使其使用更新版本的Selenium
?
答案 0 :(得分:1)
此代码对我有用:
library(RSelenium)
library(png)
library(openssl)
Sys.setenv(no_proxy="127.0.0.1,localhost,192.168.0.20")
extraCapabilities <- list(proxy = list(httpProxy = "proxy-server:8081",
proxyType = "MANUAL",
sslProxy = "proxy-server:8081"),
acceptInsecureCerts = TRUE)
remDr <- remoteDriver(remoteServerAddr = "selenium.server.de"
, port = 4444
, browserName = "firefox"
, extraCapabilities = extraCapabilities)
remDr$open()
remDr$navigate("http://google.com")
remDr$screenshot(file = '/tmp/test.png')
res <- remDr$getStatus()
remDr$close()
我的Docker-Selenium支持公司代理。对于正常使用情况,extraCapabilities中的这一部分不是必需的。仅当在代理后面工作时,才需要使用环境变量no_proxy。参数“ acceptInsecureCerts = TRUE”很重要,否则更新的Firefox版本会出现问题。命令“ makeFirexprofile”对我不起作用了。这通常在使用代理的说明中找到。那样行不通。 RSelenium的错误消息也没有用。提高docker容器上的日志级别更有意义。这适用于-e JAVA_OPTS =“-Dselenium.LOGGER.level = ALL”。这显示了实际发生的错误。
我希望能有所帮助。我成功使用了容器firefox-standalone:3.12。