【问题标题】:Can browser called from RSelenium run in the backround从 R Selenium 调用的浏览器可以在后台运行吗
【发布时间】:2015-01-30 08:28:04
【问题描述】:

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

谢谢

【问题讨论】:

    标签: r rselenium


    【解决方案1】:

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

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

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

    默认浏览:

    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 调用来解决此问题。

    【讨论】:

    • 谢谢。看来我一开始就卡住了。我收到以下错误:> remDrv$open() [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 &lt;- phantom("C:\\Users\\phantomjs.exe", extras = c('--ssl-protocol=tlsv1')); remDrv &lt;- remoteDriver(browserName = 'phantomjs'); remDrv$open()
    • 我仍然遇到同样的错误。这就是我运行的: pJS
    • 我认为这是我没有得到的(抱歉破坏..)将 phantomjs.exe 所在的文件夹放在用户或系统 PATH 变量中(例如,C:\ Program Files\phantomjs-1.9.7-windows) 我将它放在我从 r 中的getwd() 获得的路径中
    • 完成了,我得到了Error in phantom() : PhantomJS binary not located。仅当我在 getwd() 路径中解压缩幻像或运行 phantom("pathWherephEXEis\\phantomjs.exe") 时,我才没有收到上述错误。在这些情况下,虽然我会回到我的第一条评论中描述的错误。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2013-04-17
    • 2021-05-05
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多