浏览器能否在后台从 RSelenium 运行 调用

Can browser called from RSelenium run in the backround

我正在 windows 7 机器上工作。是否可以从 RSelenium 库 运行 remoteDriver()$open() 并让浏览器 运行 在后台(即不可见)。

谢谢

是的,这是可能的。 RSelenium 的默认浏览器是 Firefox。但是,RSelenium 甚至支持使用 PhantomJS 的无头浏览,这在 respective vignette 中有详细描述。

一般来说,要利用 Windows 7 下的 PhanomJS,您只需要

  • download PhantomJS 并将文件夹路径添加到 phantomjs.exe 作为系统 Environment Variable 菜单中用户或系统 PATH 变量的附加条目(例如 C:\Program Files\phantomjs-1.9.7-windows) 注意:phantomjs.exe本身不是路径规范的一部分。
  • 替换代码开头和结尾的代码片段,如下所述

默认浏览:

checkForServer()
startServer()
remDrv <- remoteDriver()
remDrv$open()

...

remDrv$quit()
remDrv$closeServer()

无头浏览:

pJS <- phantom()
remDrv <- remoteDriver(browserName = 'phantomjs')
remDrv$open()

...

remDrv$close()
pJS$stop()

其他建议

命令行参数和 POODLE

注意可以传递给 phantomcommand line arguments

例如,PhantomJS 默认使用 SSLv3,自 POODLE 以来,每个服务器都不鼓励这样做。

解决方法是用 --ssl-protocol=tlsv1:

调用 phantom
pJS <- phantom(extras = c('--ssl-protocol=tlsv1'))

时间问题

PhantomJS 经常发生的一件事是时间问题。与 Firefox 和 Chrome 等浏览器一起使用的代码会因 PhantomJS 而中断,因为 PhantomJS 太快了。

您可以通过在不同的 remoteDriver 调用之间放置 Sys.sleep 调用来解决此问题。