【发布时间】:2015-01-30 08:28:04
【问题描述】:
我正在使用 Windows 7 机器。是否可以从 RSelenium 库运行 remoteDriver()$open() 并让浏览器在后台运行(即不可见)。
谢谢
【问题讨论】:
我正在使用 Windows 7 机器。是否可以从 RSelenium 库运行 remoteDriver()$open() 并让浏览器在后台运行(即不可见)。
谢谢
【问题讨论】:
是的,这是可能的。 RSelenium 的默认浏览器是 Firefox。但是,RSelenium 甚至支持使用PhantomJS 进行无头浏览,这在respective vignette 中有详细描述。
一般来说,要在 Windows 7 下利用 PhanomJS,您只需要
phantomjs.exe 作为用户或系统 PATH 变量的附加条目在系统上的 Environment Variable 菜单中(例如 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
注意command line arguments,您可以将其传递给phantom。
例如,PhantomJS 默认使用 SSLv3,自 POODLE 以来每个服务器都不鼓励使用 SSLv3。
解决方法是用--ssl-protocol=tlsv1 调用phantom:
pJS <- phantom(extras = c('--ssl-protocol=tlsv1'))
时间问题
PhantomJS 经常发生的一件事是时间问题。与 Firefox 和 Chrome 等浏览器一起工作的代码与 PhantomJS 不同,因为 PhantomJS 太快了。
您可以通过在不同的 remoteDriver 调用之间放置 Sys.sleep 调用来解决此问题。
【讨论】:
[1] "Connecting to remote server" Error: Summary: UnknownError Detail: An unknown server-side error occurred while processing the command. class: java.lang.NoClassDefFoundError 当我运行 checkForServer(); startServer(); pJS <- phantom("C:\\Users\\phantomjs.exe", extras = c('--ssl-protocol=tlsv1')); remDrv <- remoteDriver(browserName = 'phantomjs'); remDrv$open()
getwd() 获得的路径中
Error in phantom() : PhantomJS binary not located。仅当我在 getwd() 路径中解压缩幻像或运行 phantom("pathWherephEXEis\\phantomjs.exe") 时,我才没有收到上述错误。在这些情况下,虽然我会回到我的第一条评论中描述的错误。