Search code examples
rrselenium

RSelenium is not working when creating servers


I am using Rselenium and today I got a weird issue. It was working until last friday but now it got crashed. I have updated main packages and also java but it is not working. This is what I get when I use next code:

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")

When running the first remDr for rsDriver I got this:

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)$")

And for the second remDr, it works but trying to use open it fails and shows next message:

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

How can I solve these issues? This is the session info:

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 

Solution

  • SOLUTION: DELETE the LICENSE.chromedriver file.

    You can find the file location which is printed in the output of:

    library(wdman)
    selenium(retcommand=T)
    #delete the LICENSE.chromedriver file
    

    To DELETE the file: On linux terminal:(you may need to change the version)

    sudo rm -rf /myusername/.local/share/binman_chromedriver/linux64/110.0.5481.30/LICENSE.chromedriver
    

    Note: you must be using the apt version rather than snap if using linux: https://www.omgubuntu.co.uk/2022/04/how-to-install-firefox-deb-apt-ubuntu-22-04

    To DELETE the file: On mac terminal:(you may need to change the version)

    sudo rm /Users/myusername/Library/Application Support/binman_chromedriver/mac64/110.0.5481.30/LICENSE.chromedriver
    

    To DELETE the file: In windows R console:(you may need to change the version)

    #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")
    

    ###if you still get Selenium server signals port = 4444 is already in use. you can reset the port using the below command in 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"))
        
      }
    }