2017-02-15 125 views
1

我想用RSelenium刮一個網站。但是,當我想連接到Selenium服務器時遇到問題。RSelenium無法連接到主機rsDriver()

可以想象我使用rsDriver()命令啓動硒服務器和瀏覽器:

rsDriver(browser = c('firefox')) 

這是產生的輸出:

[1] "Connecting to remote server" 
Fehler in checkError(res) : 
Couldnt connect to host on http://localhost:4567/wd/hub. 
Please ensure a Selenium server is running. 
Zusätzlich: Warnmeldung: 
In rsDriver(browser = c("firefox")) : Could not determine server status. 

備選地我試圖此命令(發現它在另一線程在計算器上):

remDr <- remoteDriver(remoteServerAddr = "localhost" 
         , port = 4444L 
         , browserName = "htmlunit" 
) 
remDr$open() 

但它失敗:

[1] "Connecting to remote server" 
Fehler in checkError(res) : 
    Couldnt connect to host on http://localhost:4444/wd/hub. 
    Please ensure a Selenium server is running. 

這是我sessioninfo:

R version 3.3.2 (2016-10-31) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: macOS Sierra 10.12.2 

locale: 
[1] de_CH.UTF-8/de_CH.UTF-8/de_CH.UTF-8/C/de_CH.UTF-8/de_CH.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] seleniumPipes_0.3.7 whisker_0.3-2  magrittr_1.5  xml2_1.1.1   jsonlite_1.2  httr_1.2.1   
[7] RSelenium_1.7.1  wdman_0.2.2   

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.9  XML_3.98-1.5  binman_0.1.0  assertthat_0.1 bitops_1.0-6  rappdirs_0.3.1 R6_2.2.0   
[8] semver_0.2.0  curl_2.3   subprocess_0.8.0 tools_3.3.2  yaml_2.1.14  caTools_1.17.1 openssl_0.9.6 

我在塞拉利昂的MacOS版本10.12.2使用Firefox版本51.0.1(64位)。

任何幫助,非常感謝!

+1

它說了兩次'請確保Selenium服務器正在運行。 'Selenium服務器是否在你的機器上運行? – GGamba

回答

3

檢查Selenium服務器是否正在運行。您可以嘗試自動運行一個:

library(RSelenium) 
library(wdman) 
selServ <- wdman::selenium(verbose = FALSE) 

然後,您可以檢查日誌,看看是否有任何問題:

selServ$log() 

另外,您可以嘗試手動運行Selenium服務器:

library(RSelenium) 
library(wdman) 
selServ <- wdman::selenium(retcommand = TRUE, verbose = FALSE) 

然後在終端上手動運行cat(selServ)的輸出:

> cat(selServ) 
/usr/bin/java -Dwebdriver.chrome.driver='/Users/admin/Library/Application Support/binman_chromedriver/mac64/2.27/chromedriver' -Dwebdriver.gecko.driver='/Users/admin/Library/Application Support/binman_geckodriver/macos/0.14.0/geckodriver' -Dphantomjs.binary.path='/Users/admin/Library/Application Support/binman_phantomjs/macosx/2.1.1/phantomjs-2.1.1-macosx/bin/phantomjs' -jar '/Users/admin/Library/Application Support/binman_seleniumserver/generic/3.0.1/selenium-server-standalone-3.0.1.jar' -port 4567 
+0

非常感謝您的幫助。您的解決方案由於某種原因無法正常工作,但是,我能夠以其他方式運行它。 –

+1

@ J.Doe如果解決方案不起作用,您應該從日誌中發佈輸出。如果您能夠以其他方式運行它,則應將其作爲添加未來觀衆的答案發布。 – jdharrison

+0

謝謝。 @jdharrison是否碰巧知道是否可以在Windows上更改java.exe的路徑?默認的c:\ windows \ system32 \ java.exe似乎是一個過時的exe。 (我替換它,現在它可以工作,即服務器以腳本啓動,但更改路徑可能是更好的選擇。) – lukeA

0

謝謝@jdharrison!我也遇到了類似的問題,因爲昨天RSelenium仍然正常工作,但今天它不再啓動瀏覽器。運行:

library(wdman) 
selServ <- wdman::selenium(verbose = FALSE) 
selServ$log() 

給我看,這個問題是由一夜之間下載了一個損壞的jar文件造成的:

"Error: Invalid or corrupt jarfile C:\\Users\\user.name\\AppData\\Local\\binman\\binman_seleniumserver\\generic\\3.8.0/selenium-server-standalone-3.8.0.jar" 

自動,在RSelenium的rsDriver()函數採用最新的硒服務器的獨立jar文件。一切正常,當我運行rsDriver與以前的jarfile代替:

rD <- rsDriver(verbose = FALSE, version = "3.7.1")