簡體   English   中英

RSelenium UnknownError - 使用谷歌瀏覽器的java.lang.IllegalStateException

[英]RSelenium UnknownError - java.lang.IllegalStateException with Google Chrome

我正在運行基於RSelenium Basics CRAN頁面的以下腳本:

library(RSelenium)
startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)
remDr <- remoteDriver(browserName = "chrome")
remDr$open()

這會產生以下錯誤:

Exception in thread "main" java.net.BindException: Selenium is already running on port 4444. Or some other service is.
 at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:492)
 at org.openqa.selenium.server.SeleniumServer.boot(SeleniumServer.java:305)
 at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:245)
 at org.openqa.grid.selenium.GridLauncher.main(GridLauncher.java:64)

根據GitHub上這個對話的評論,我修改了我的startServer()命令,如下所示:

startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)

然后我在控制台中收到以下錯誤:

Error:   Summary: UnknownError
 Detail: An unknown server-side error occurred while processing the command.
 class: java.lang.IllegalStateException

彈出的Java提示中出現此錯誤:

14:38:55.098 INFO - Launching a standalone Selenium Server
14:38:55:161 INFO - Java: Oracle Corporation 25.40-b25
14:38:55.161 INFO - OS: Windows 7 6.1 amd64
14:38:55.161 INFO - v2.46.0, with Core v2.46.0. Built from revision 87c69e2
14:38:55.209 INFO - Driver class not found: com.opera.core.systems.OperaDriver
14:38:55.209 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
14:38:55:289 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4455/wd/hub
14:38:55:289 INFO - Selenium Server is up and running

我不確定缺少Opera驅動程序是一個實際錯誤還是只是一個警告。 無論如何,我想使用Chrome,所以看起來應該沒關系。 我究竟做錯了什么?

我終於能夠通過拼接來自許多不同來源的信息來使RSelenium工作。 我認為將所有這些信息放在一個位置會很有幫助,所以這是我通過Chrome瀏覽器將RSelenium用於Windows 7(64位)的過程:

  1. 下載64位版本的Java 我無法使用標准下載。
  2. 下載ChromeDriver
  3. 下載Selenium Standalone Server或從R運行checkForServer()
  4. 創建批處理文件以啟動Selenium服務器。 我最初嘗試使用R腳本中的startServer() ,但它經常會卡住而不會繼續執行腳本中的下一行。 這是我創建的批處理文件:

     java -jar C:\\path\\to\\selenium-server-standalone.jar -Dwebdriver.chrome.driver=C:\\path\\to\\chromedriver.exe 

    ChromeDriver可以放在PATH環境變量中,但我決定將ChromeDriver的路徑添加到批處理文件中(它實現了相同的目標)。

  5. 運行R腳本。 這是我的最終劇本:

     library(RSelenium) shell.exec(paste0("C:\\\\path\\\\to\\\\yourbatchfile.bat")) Sys.sleep(5) remDr <- remoteDriver(browserName = "chrome") remDr$open(silent = TRUE) remDr$navigate("http://www.google.com") 

    Sys.sleep()調用是必要的,因為如果它在Selenium Server完成啟動之前運行,我會在remoteDriver()調用中遇到錯誤。

值得注意的是,RSelenium對OSX有一些煩人的差異。 當您分別運行yourcommand.command文件和remDr $ open()方法時,invisible = T / silent = T參數將不起作用。 invisible = T實際上會提醒您它只適用於Windows。 沒有什么大不了的(如果有人有解決方法,我會很感激)。

為了后人的緣故,這是OSX使用.command文件而不是.bat替換shell.exec的一個小變化,其中包含與上面相同的內容:

yourcommand.command文件內容

java -jar /path/to/selenium-server-standalone.jar -Dwebdriver.chrome.driver=/path/to/chromedriver

R腳本修改

library(RSelenium)
system(paste("open","/path/to/yourcommand.command"))
Sys.sleep(5)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM