2016-10-06 2 views
2

のremoteDriver機能で発生します。エラー、私は次のコードで動的なWeb上のデータをこすりしたいRSelenium

> URL<- "http://www.cbooo.cn/realtime" 
> library(bitops) 
> library(RCurl) 
> library(XML) 
> library(RSelenium) 
> library(magrittr) 
> checkForServer() 
Warning message: 
checkForServer is deprecated. 
Users in future can find the function in file.path(find.package("RSelenium"), "example/serverUtils"). 
The sourcing/starting of a Selenium Server is a users responsiblity. 
Options include manually starting a server see vignette("RSelenium-basics", package = "RSelenium") 
and running a docker container see vignette("RSelenium-docker", package = "RSelenium") 
> startServer() 
$stop 
function() 
{ 
    tools::pskill(selPID) 
} 
<environment: 0x10991af0> 

$getPID 
function() 
{ 
    return(selPID) 
} 
<environment: 0x10991af0> 

Warning message: 
startServer is deprecated. 
Users in future can find the function in file.path(find.package("RSelenium"), "example/serverUtils"). 
The sourcing/starting of a Selenium Server is a users responsiblity. 
Options include manually starting a server see vignette("RSelenium-basics", package = "RSelenium") 
and running a docker container see vignette("RSelenium-docker", package = "RSelenium") 
> remDrv <- remoteDriver() 
> remDrv$browserName="Internet Explorer" 
> remDrv$open() 
[1] "Connecting to remote server" 

Selenium message: The best matching driver provider org.openqa.selenium.ie.InternetExplorerDriver can't create a new driver instance for Capabilities [{nativeEvents=true, browserName=Internet Explorer, javascriptEnabled=true, version=, platform=ANY}] 
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03' 
System info: host: 'DESKTOP-J0D980N', ip: '10.36.17.76', os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_77' 
Driver info: driver.version: unknown 
Error: Summary: UnknownError 
    Detail: An unknown server-side error occurred while processing the command. 
    class: org.openqa.selenium.WebDriverException 
    Further Details: run errorDetails method 

私は解決することはできません、次の質問があります 1はcheckForServer、のstartServerは推奨されています。 2リモートサーバーに常に接続していますが、私はこのfunciotnで何らかの引数を設定する方法と何をすべきかを理解していません できるだけ早くアンサーを取得したいと考えています。

+0

インターネットエクスプローラまたはエッジがインストールされていますか?あなたがエッジを持っているなら、あなたは 'remDr < - remoteDriver(browserName =" MicrosoftEdge ")'のようになります。 – jdharrison

答えて

0

実用的な作業ソリューションを作成するには、古いバージョンのRSeleniumとこのコードを使用します。

if (!require("XML")) { 
    install.packages("XML",repos= 'https://cloud.r-project.org') 
    library("XML") 
} 
#XML is a dependency 
if (!require("RSelenium")) { 
    install.packages("https://cran.r-project.org/src/contrib/Archive/RSelenium/RSelenium_1.3.5.tar.gz", repos=NULL, type="source", dependencies = TRUE) 
    library("RSelenium") 
} 
download.file('http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar', destfile = "~/Documents/R/library/RSelenium/bin/selenium-server-standalone.jar") 

#start server 
system('java -jar "~/Documents/R/library/RSelenium/bin/selenium-server-standalone.jar"') 

library(RSelenium) 
checkForServer() 
startServer() 

これは最適な解決策ではありません。しかし、実用的なソリューションです。

1

RSeleniumの著者は、(https://github.com/ropensci/RSelenium/issues/81)を、以下のようなソリューションを提供:

のFirefox 48からヤモリドライバ/マリオネットは、セレンでFirefoxを実行するために必要とされるであろうに、病棟。

あなたがFirefoxの48持っている場合は、次のようにあなたはヤモリのドライバを実行することができます。

のガイドラインを参照してください

ます。https://developer.mozilla.org/en-US/docs/Mozilla/QA/マリオネット/ webdriverを

HTTPSから関連するヤモリのドライバをダウンロードします。//github.com/mozilla/geckodriver/releases

がPATHにそれを追加するか、バイナリを起動するときに場所を参照してください(下記参照)

# get beta selenium standalone 
RSelenium::checkForServer(beta = TRUE) 
# assume gecko driver is not in our path (assume windows and we downloaded to docs folder) 
# if the driver is in your PATH the javaargs call is not needed 
selServ <- RSelenium::startServer(javaargs = c("- Dwebdriver.gecko.driver=\"C:/Users/john/Documents/geckodriver.exe\"")) 
remDr <- remoteDriver(extraCapabilities = list(marionette = TRUE)) 
remDr$open() 
.... 
.... 
remDr$close() 
selServ$stop() 
+0

私は@Tien Linによって提供された上記のソリューションを使用しています。私はgeckodriverを自分のユーザフォルダに入れ、システム変数にそのパスを追加しました。私は、Windows 10を使用し、私はそれを使用する方法を以下に示します。 'selServ < - のstartServer() remDr < - remoteDriver(remoteServerAddr = "localhost" を 、ポート= 4444 を、browserNameは= "Firefoxの" 、extraCapabilities =リスト(マリネット=真)) '。 それから、明らかな 'remDr $ open'と' remDr $ navigate(toURL) 'です。私の間違いはバージョンをアップグレードすることでした... – salvu

関連する問題