Pertanyaan RSelenium UnknownError - java.lang.IllegalStateException dengan Google Chrome


Saya menjalankan skrip berikut berdasarkan pada Halaman CRAN RSENS Dasar:

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

Ini menghasilkan kesalahan berikut:

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)

Berdasarkan komentar dari percakapan ini di GitHub, Saya telah memodifikasi startServer() perintah seperti ini:

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

Saya kemudian menerima kesalahan berikut di konsol saya:

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

Dan kesalahan ini di prompt Java yang muncul:

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

Saya tidak yakin jika kekurangan driver Opera adalah kesalahan yang sebenarnya atau hanya peringatan. Apapun, saya ingin menggunakan Chrome, jadi sepertinya itu tidak masalah. Apa yang saya lakukan salah?


4
2018-06-29 20:11


asal


Jawaban:


Saya akhirnya bisa membuat RSelenium bekerja dengan mengumpulkan informasi dari sejumlah sumber yang berbeda. Saya pikir akan sangat membantu untuk memiliki semua informasi ini di satu lokasi, jadi di sini adalah proses yang saya lalui untuk mendapatkan RSelenium untuk bekerja pada Windows 7 (64-bit) dengan Chrome sebagai browser:

  1. Unduh Versi 64-bit Java.  Saya tidak bisa mendapatkan apa pun untuk bekerja dengan unduhan standar.
  2. Unduh ChromeDriver.
  3. Unduh Server Selenium Standalone atau lari checkForServer() dari R.
  4. Buat file batch untuk memulai server Selenium.  Saya awalnya mencoba menggunakan startServer() dari skrip R, tapi itu akan sering macet dan tidak meneruskan ke baris berikutnya di skrip. Berikut ini file batch yang saya buat:

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

    ChromeDriver dapat dimasukkan ke dalam variabel lingkungan PATH, tetapi saya memutuskan untuk menambahkan jalur ke ChromeDriver ke file batch (yang menyelesaikan tujuan yang sama).

  5. Jalankan skrip R.  Inilah skrip terakhir saya:

    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")
    

    Itu Sys.sleep() panggilan diperlukan karena saya akan mendapatkan kesalahan dalam remoteDriver() panggilan jika berlari sebelum Server Selenium selesai dimulai.


8
2017-07-02 15:16



Perlu dicatat bahwa RSelenium memiliki beberapa perbedaan yang mengganggu untuk OSX. Argumen tak terlihat = T / diam = T tidak akan berfungsi ketika Anda menjalankan file perintah-perintah dan perintah remDr $ terbuka (), masing-masing. The invisible = T akan benar-benar mengingatkan Anda bahwa ia hanya bekerja pada Windows. Bukan masalah besar (dan jika seseorang memiliki solusi saya akan menghargainya).

Untuk anak cucu, inilah sedikit variasi untuk OSX untuk menggantikan shell.exec menggunakan file .command daripada .bat dengan isi yang sama seperti di atas:

isi file perintah Anda

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

Modifikasi skrip R

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

1
2018-05-19 18:41