创建服务器时 RSelenium 不工作

use*_*007 6 r rselenium

我正在使用 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)

Nea*_*sch 7

解决方案:删除该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)