0

我在 OS X Yosemite(10.10.4) 上使用 RR 3.1.1。我最近安装了 RSelenium,但经常收到未知错误。我使用的代码如下:

require(RSelenium)
checkForServer()
startServer()
Sys.sleep(5)
remDr <- remoteDriver()
remDr$open()

错误如下:

remDr$open() [1] "连接到远程服务器" RCurl 调用中的未定义错误。queryRD(paste0(serverURL, "/session"), "POST", qdata = toJSON(serverOpts)) 中的错误:

我尝试从官方网站下载 selenium-java-2.41.0。然后我把文件放在Library/Java/Extension中。然后我尝试了这行代码

system("java -jar ~/Library/Java/Extension/selenium-2.47-2.1/selenium-java-2.47.1.jar")

但它没有用,我一直收到同样的错误。

然后我使用终端像这样安装包:

sudo java -jar selenium-server-standalone-2.47.1.jar

它安装了一些东西,但问题仍然没有解决。我不知道还能做什么。

4

2 回答 2

2

这是 Mac 的安全问题。您需要从http://www.seleniumhq.org/download/下载独立的 selenium 服务器,将其放在与您尝试运行的脚本相同的目录中,然后运行它。您的安全设置可能会阻止这种情况,因为它“未经过身份验证”,这意味着您必须转到安全设置并手动覆盖。之后,它会正常工作。

资源:

http://www.computerworld.com/article/2971265/application-development/how-to-drive-a-web-browser-with-r-and-rselenium.html

于 2016-01-07T22:00:14.327 回答
1

我不知道你是否仍然感兴趣,但我为此苦苦挣扎了好几天!这是适用于我的安装的内容(RSelenium 1.3.5,适用于 Mac OS X 2.0.0、R 3.2.2、OS X Yosemite 10.10.4 的 phantom):

library("RSelenium")
message("Starting Phantom JS ...")
pJS <- phantom() # starts PhantomJS in webdriver mode on port 4444
Sys.sleep(5) # give binary time to run and open port
eCap <- list(phantomjs.page.settings.userAgent 
  = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36")
remDr <- remoteDriver(browserName = "phantomjs", extraCapabilities = eCap)
message("Opening headless browser session ...")
remDr$open(silent=T)
Sys.sleep(5) # give it a moment

Phantom 位于 usr/bin/ 目录中。请注意,没有“startServer()”语句或找到 selenium jar 并运行它。如果您直接运行 Selenium 服务器,它会打开端口 4444,然后 Phantom JS 将不会在该端口上启动。在 Mac 终端窗口中使用命令“lsof -i :4444”查看端口 4444 上发生的情况。

完成这一切后,操作仍然不尽如人意——在获得旋转色轮之前,我只能执行少数 RSelenium 命令,并且必须转到终端窗口并发出“kill PID”命令才能再次控制 R . 如果问题是网站响应时间慢,我已经尝试过在所有地方进行延迟,但这没有任何区别。

祝你好运。

于 2015-10-27T02:38:30.540 回答