RSelenium icon indicating copy to clipboard operation
RSelenium copied to clipboard

rsDriver not launching Chrome under mac64

Open JeffreyBLewis opened this issue 4 years ago • 1 comments
trafficstars

Operating System

mac64

Selenium Server version (selenium-server-standalone-3.0.1.jar etc.)

4.0.0-alpha-2

Browser version (firefox 50.1.0, chrome 54.0.2840.100 (64-bit) etc.)

Chrome 88.0.4324.87

Other driver version (chromedriver 2.27, geckodriver v0.11.1, iedriver x64_3.0.0, PhantomJS 2.1.1 etc.)

chromedriver 88.0.4324.27

Expected behaviour

Expect

rD <- rsDriver(browser=c("chrome"), verbose=TRUE, check=TRUE)

to launch chrome and create a working selenium connection.

Actual behaviour

rD <- rsDriver(browser=c("chrome"), verbose=TRUE, check=TRUE)

results in

checking Selenium Server versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking chromedriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking geckodriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking phantomjs versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
[1] "Connecting to remote server"

Selenium message:Timed out waiting for driver server to start.
Build info: version: '4.0.0-alpha-2', revision: 'f148142cf8', time: '2019-07-01T21:30:10'
System info: host: '', ip: '', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.15.7', java.version: '1.8.0_201'
Driver info: driver.version: unknown

Could not open chrome browser.
Client error message:
	 Summary: UnknownError
 	 Detail: An unknown server-side error occurred while processing the command.
	 Further Details: run errorDetails method
Check server log for further details.

The reason and I what think can be done to work around is shown at https://github.com/ropensci/wdman/issues/25

Steps to reproduce the behaviour

rD <- rsDriver(browser=c("chrome"), verbose=TRUE, check=TRUE)

on an intel-based mac64 computer.

JeffreyBLewis avatar Jan 16 '21 02:01 JeffreyBLewis

Solution (temporary)

(I have tested this is windows and hopefully it will be solved in your system too. )

rd <- list()

rd$server <- wdman::selenium(
  port = 4567L,
  chromever = NULL, geckover = NULL, iedrver = NULL, phantomver = NULL,
  check = TRUE,
  jvmargs =list(
    chrome = paste0(
      "-Dwebdriver.chrome.driver=",
      paste0(
        '"',
        normalizePath(
          # here you may need to choose which version to work with
          # I am assuming you have latest chromedriver and chrome
          # otherwise you may need to store the output into a variable and
          # choose from there (the output of list.files)
          max(
            list.files(
              binman::app_dir("chromedriver"), 
              recursive = TRUE, 
              pattern = "[^\\.]chromedriver$|chromedriver\\.", 
              full.names = TRUE)
          )
        ),
        '"')
    )
  )
)


rd$client <- RSelenium::remoteDriver(
  port = 4567L, 
  browser = "chrome"
)

rd$client$open()

Details:

This will not run (as of now) RSelenium::rsDriver(browser=c("chrome"), verbose=TRUE, check=FALSE) Because of an additional file that is currently coming with Chrome Driver : LICENSE.chromedriver Check it list.files(binman::app_dir("chromedriver"), recursive = TRUE) You can check how the command is getting messed up wdman::selenium(port = 4567L, retcommand = TRUE, check = FALSE)

bedantaguru avatar Feb 13 '23 05:02 bedantaguru