2016-10-06 3 views
2

Я хочу, чтобы очистить данные о динамической сети с помощью следующего кода:ошибка происходит в функции remoteDriver из 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, и что делать Надеюсь получить anwser как можно скорее, спасибо.

+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 = "локальный" , порт = 4444 , browserName = "светлячок" , extraCapabilities = список (marionette = TRUE)). Тогда очевидные 'remDr $ open' и' remDr $ navigate (toURL) '. Моя ошибка заключалась в том, чтобы обновить версии ... – salvu

Смежные вопросы