5

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を使いたいので、どうでもよさそうです。私は何を間違っていますか?

4

2 に答える 2

9

さまざまな情報源からの情報をつなぎ合わせることで、最終的に RSelenium を機能させることができました。この情報をすべて 1 か所にまとめておくと便利だと思います。そのため、ブラウザとして Chrome を使用して RSelenium を Windows 7 (64 ビット) で動作させるために行ったプロセスを次に示します。

  1. Java の 64 ビット バージョンをダウンロードします。 標準のダウンロードでは何も動作しませんでした。
  2. ChromeDriverをダウンロードします。
  3. Selenium Standalone ServerをダウンロードするかcheckForServer()、R から実行します。
  4. Selenium サーバーを起動するためのバッチ ファイルを作成します。 最初はstartServer()R スクリプトから使用しようとしましたが、頻繁にスタックしてスクリプトの次の行に進めませんでした。作成したバッチファイルは次のとおりです。

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

    Selenium Server の起動が完了する前に呼び出しを実行するとSys.sleep()エラーが発生するため、この呼び出しが必要でした。remoteDriver()

于 2015-07-02T15:16:08.500 に答える
1

RSelenium には、OSX との厄介な違いがいくつかあることに注意してください。yourcommand.command ファイルと remDr$open() メソッドをそれぞれ実行すると、invisible=T/silent=T 引数は機能しません。invisible=T は、実際には Windows でのみ機能することを思い出させてくれます。大したことではありません(誰かが回避策を持っているなら、私はそれを感謝します)。

後世のために、上記と同じ内容の .bat の代わりに .command ファイルを使用して、OSX が 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)
...
于 2016-05-19T18:41:55.440 に答える