我正在使用 Rselenium,今天遇到了一个奇怪的问题。它一直工作到上周五,但现在崩溃了。我已经更新了主包和 java,但它不起作用。这是我使用下一个代码时得到的结果:
library(wdman)
library(RSelenium)
library(xml2)
library(selectr)
library(httr)
library(jsonlite)
#start RSelenium
remDr <- rsDriver(
port = 4445L,
browser = "firefox"
)
#remDr$open()
remDr <- remoteDriver(port = 4445L,browser = "firefox")
Run Code Online (Sandbox Code Playgroud)
当为 rsDriver 运行第一个 remDr 时,我得到了这个:
checking Selenium Server versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking chromedriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking geckodriver versions:
BEGIN: PREDOWNLOAD
Error in (function (url, platform, history, appname, platformregex = platform, :
unused argument (fileregex = "\\.(gz|zip)$")
Run Code Online (Sandbox Code Playgroud)
对于第二个 remDr,它可以工作,但尝试使用 open 它会失败并显示下一条消息:
remDr$open()
[1] "Connecting to remote server"
Error in checkError(res) :
Undefined error in httr call. httr output: Failed to connect to localhost port 4445: Connection refused
Run Code Online (Sandbox Code Playgroud)
我该如何解决这些问题?这是会话信息:
sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] jsonlite_1.8.4 httr_1.4.4 selectr_0.4-2 xml2_1.3.3 RSelenium_1.7.9
[6] wdman_0.2.6
loaded via a namespace (and not attached):
[1] Rcpp_1.0.9 binman_0.1.2 assertthat_0.2.1 rappdirs_0.3.3 bitops_1.0-7
[6] R6_2.5.1 semver_0.2.0 magrittr_2.0.3 stringi_1.7.6 curl_4.3.2
[11] tools_4.1.2 stringr_1.4.0 yaml_2.3.5 compiler_4.1.2 caTools_1.18.2
Run Code Online (Sandbox Code Playgroud)
解决方案:删除该LICENSE.chromedriver文件。
您可以找到在输出中打印的文件位置:
library(wdman)
selenium(retcommand=T)
#delete the LICENSE.chromedriver file
Run Code Online (Sandbox Code Playgroud)
删除文件:在linux终端上:(您可能需要更改版本)
sudo rm -rf /myusername/.local/share/binman_chromedriver/linux64/110.0.5481.30/LICENSE.chromedriver
Run Code Online (Sandbox Code Playgroud)
注意:如果使用 Linux,则必须使用 apt 版本而不是 snap:https://www.omgubuntu.co.uk/2022/04/how-to-install-firefox-deb-apt-ubuntu-22-04
删除文件: 在 mac 终端上:(您可能需要更改版本)
sudo rm /Users/myusername/Library/Application Support/binman_chromedriver/mac64/110.0.5481.30/LICENSE.chromedriver
Run Code Online (Sandbox Code Playgroud)
要删除文件:在 Windows R 控制台中:(您可能需要更改版本)
#replace WINDOWSUSERNAME with your windows username and chromedriver version
port <- 4444L
unlink("C:/Users/WINDOWSUSERNAME/AppData/Local/binman/binman_chromedriver/win32/110.0.5481.30/LICENSE.chromedriver")
library(RSelenium)
rd <- rsDriver(port=as.integer(port),browser="firefox")
Run Code Online (Sandbox Code Playgroud)
###如果仍然出现,Selenium server signals port = 4444 is already in use.您可以在 Windows 中使用以下命令重置端口:
#clear busy port in windows
port <- 4444L
tintern <- system("netstat -a -n -o",intern=T)
irow1 <- grep(as.character(port),tintern)
if(length(irow1)>0){
irow1 <- irow1[1]
if(!is.na(irow1)){
irow1 <- irow1[1]
trow <- tintern[irow1]
trow <- trimws(rm_white(trow))
tpid <- word(trow,-1,-1)
system(paste0("taskkill /pid ",tpid," /F"))
}
}
Run Code Online (Sandbox Code Playgroud)