在R中设置RSelenium

时间:2018-06-19 10:20:40

标签: r macos selenium rselenium

我试图在R中运行RSelenium文件。我在MacOS 10.13.5上通过devtools成功安装了RSelenium 1.7.1,wdman 0.2.2和bin man 0.1.0。 我的测试R文件如下所示:

library(RSelenium)

# Start Browser
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate("http://www.google.com")
remDr$navigate(url)

# Click button 20 times:
i <- 1
while (i<20){
  try(remDr$findElement(using = 'css selector', ".jscroll-next")$clickElement())
  i <- i + 1
  Sys.sleep(2)
}

# Smarter: Click button until all sites are loaded
run <- TRUE
i <- 1
while (run){
  tryCatch(
    remDr$findElement(using = 'css selector', ".jscroll-next")$clickElement(),
    error= function(c) {run <<- F},
    warning = function(w) {run <<- F},
    finally = print(paste("Pressed button", i, "times"))
  )
  i <- i + 1
  Sys.sleep(2)
}

每当我尝试执行此R文件时,我都会收到错误消息。此日志文件如下所示:

[Workspace loaded from ~/RSeleniumtest/.RData]

> library(RSelenium)
> 
> # Start Browser
> rD <- rsDriver()
checking Selenium Server versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking chromedriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking geckodriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking phantomjs versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
[1] "Connecting to remote server"
Fehler in checkError(res) : 
  Undefined error in httr call. httr output: Failed to connect to localhost port 4567: Connection refused
Zusätzlich: Warnmeldung:
In rsDriver() : Could not determine server status.
> remDr <- rD[["client"]]
Fehler: Objekt 'rD' nicht gefunden
> remDr$navigate("http://www.google.com")
Fehler: Objekt 'remDr' nicht gefunden
> remDr$navigate(url)
Fehler: Objekt 'remDr' nicht gefunden
> 
> # Click button 20 times:
> i <- 1
> while (i<20){
+   try(remDr$findElement(using = 'css selector', ".jscroll-next")$clickElement())
+   i <- i + 1
+   Sys.sleep(2)
+ }
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden
Error in try(remDr$findElement(using = "css selector", ".jscroll-next")$clickElement()) : 
  Objekt 'remDr' nicht gefunden

我知道这个脚本适用于其他Windows 10操作系统,所以问题应该是我的Mac。由于&#34;无法连接到localhost端口4567:连接被拒绝&#34;我试图在设置中禁用我的防火墙,但它没有成功。 有人知道这个问题的答案吗? 每一个帮助都会很棒!

非常感谢和问候

1 个答案:

答案 0 :(得分:1)

Before running the R code, did you actually try to start selenium Webdriver in a separate terminal window? For me it looks like this,

I use this startup command in the directory where selenium.jar is located:

java  -Dhttp.proxyHost="" -Dhttp.proxyPort="" -jar selenium-server.jar -timeout 80 -browserSessionReuse

# selenium-server.jar is a symlink to selenium-XXXXX.jar

Output:_

13:02:40.659 INFO - v2.44.0, with Core v2.44.0. Built from revision 76d78cf
13:02:40.798 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{ensureCleanSession=true, browserName=internet explorer, version=, platform=WINDOWS}] does not match with current platform: LINUX
13:02:40.903 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
13:02:40.904 INFO - Version Jetty/5.1.x
13:02:40.905 INFO - Started HttpContext[/selenium-server,/selenium-server]
13:02:40.959 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@256216b3
13:02:40.960 INFO - Started HttpContext[/wd,/wd]
13:02:40.960 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
13:02:40.960 INFO - Started HttpContext[/,/]
13:02:40.964 INFO - Started SocketListener on 0.0.0.0:4444
13:02:40.965 INFO - Started org.openqa.jetty.jetty.Server@65b3120a
13:02:54.799 INFO - Executing: org.openqa.selenium.remote.server.handler.GetAllSessions@5d5846cf)
13:02:54.802 INFO - Done: org.openqa.selenium.remote.server.handler.GetAllSessions@5d5846cf

Then I can run your R code in RStudio, with some minor modifications.