hfi*_*sch 4 java selenium r rselenium
我正在运行基于RSelenium Basics CRAN页面的以下脚本:
library(RSelenium)
startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)
remDr <- remoteDriver(browserName = "chrome")
remDr$open()
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
根据GitHub上这个对话的评论,我修改了我的startServer()命令:
startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)
Run Code Online (Sandbox Code Playgroud)
然后我在控制台中收到以下错误:
Error: Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
class: java.lang.IllegalStateException
Run Code Online (Sandbox Code Playgroud)
弹出的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
Run Code Online (Sandbox Code Playgroud)
我不确定缺少Opera驱动程序是一个实际错误还是只是一个警告.无论如何,我想使用Chrome,所以看起来应该没关系.我究竟做错了什么?
我终于能够通过拼接来自许多不同来源的信息来使RSelenium工作.我认为将所有这些信息放在一个位置会很有帮助,所以这是我通过Chrome浏览器将RSelenium用于Windows 7(64位)的过程:
checkForServer()从R 运行.创建批处理文件以启动Selenium服务器. 我最初尝试使用startServer()R脚本,但它会经常卡住而不会继续执行脚本中的下一行.这是我创建的批处理文件:
java -jar C:\path\to\selenium-server-standalone.jar -Dwebdriver.chrome.driver=C:\path\to\chromedriver.exe
Run Code Online (Sandbox Code Playgroud)
ChromeDriver可以放在PATH环境变量中,但我决定将ChromeDriver的路径添加到批处理文件中(它实现了相同的目标).
运行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")
Run Code Online (Sandbox Code Playgroud)
该Sys.sleep()电话是必要的,因为我会得到一个错误的remoteDriver()电话,如果它跑前Selenium服务器已经开始结束.