ropensci / RSelenium

An R client for Selenium Remote WebDriver
https://docs.ropensci.org/RSelenium
344 stars 81 forks source link

Selenium message:session not created: This version of ChromeDriver only supports Chrome version 88 #238

Closed adrearlystate closed 3 years ago

adrearlystate commented 3 years ago

Operating System

Windows 10

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

RSelenium version 1.7.7

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

Chrome Version 87.0.4280.88 (Official Build) (64-bit)

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

> chrome_driver_version
[1] "87.0.4280.88"

Expected behaviour

rD <- rsDriver(browser=c("chrome"), chromever="87.0.4280.88", port = 4444L) This code should open a chrome browser

Actual behaviour

> rD <- rsDriver(browser=c("chrome"), chromever="87.0.4280.88", port = 4444L)
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 open.connection(con, "rb") : HTTP error 403.
> traceback()
13: open.connection(con, "rb")
12: open(con, "rb")
11: parse_con(txt, bigint_as_char)
10: parseJSON(txt, bigint_as_char)
9: parse_and_simplify(txt = txt, simplifyVector = simplifyVector, 
       simplifyDataFrame = simplifyDataFrame, simplifyMatrix = simplifyMatrix, 
       flatten = flatten, ...)
8: jsonlite::fromJSON(url)
7: (function (url, platform, history, appname, platformregex = platform, 
       versionregex = c("", "")) 
   {
       assert_that(is_URL_file(url))
       assert_that(is_character(platform))
       assert_that(is_integer(history))
       assert_that(is_string(appname))
       assert_that(is_character(platformregex))
       ghdata <- jsonlite::fromJSON(url)
       version <- ghdata[["tag_name"]]
       version <- gsub(versionregex[1], versionregex[2], version)
       get_args <- function(version, assets) {
           file <- assets[["name"]]
           url <- assets[["browser_download_url"]]
           plat <- match_platform(file, platform, platformregex)
           res <- data.frame(file = file, url = url, version = version, 
               platform = plat, stringsAsFactors = FALSE)
           stats::na.omit(res)
       }
       res <- Map(get_args, version = version, assets = ghdata[["assets"]])
       res <- do.call(rbind.data.frame, c(res, make.row.names = FALSE))
       res <- split(res[, c("version", "url", "file")], f = res[["platform"]])
       res <- lapply(res, utils::head, history)
       assign_directory(res, appname)
   })(url = "https://api.github.com/repos/mozilla/geckodriver/releases", 
       platform = "win64", history = 3L, versionregex = c("^v", 
       ""), appname = "geckodriver")
6: do.call(ymlfuncs[[c("predlfunction", "function")]], ymlfuncs[[c("predlfunction", 
       "args")]])
5: process_yaml(tempyml, verbose)
4: gecko_check(verbose, check)
3: selenium_check_drivers(chromever, geckover, phantomver, iedrver, 
       check = check, verbose = verbose, jvmargs)
2: wdman::selenium(port = port, verbose = verbose, version = version, 
       chromever = chromever, geckover = geckover, iedrver = iedrver, 
       phantomver = phantomver, check = check)
1: rsDriver(browser = c("chrome"), chromever = "87.0.4280.88", port = 4444L)
> rsDriver(check = FALSE)
[1] "Connecting to remote server"

Selenium message:session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 87.0.4280.88 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Build info: version: '4.0.0-alpha-2', revision: 'f148142cf8', time: '2019-07-01T21:30:10'
System info: host: 'XXXXXXXX', ip: 'XXXXXXXXXX', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_111'
Driver info: driver.version: unknown
remote stacktrace: Backtrace:
    GetHandleVerifier [0x013E8A43+483]
    GetHandleVerifier [0x013E8A21+449]
    GetHandleVerifier [0x017913C8+3836776]
    GetHandleVerifier [0x017AB73A+3944154]
    GetHandleVerifier [0x017A7B9A+3928890]
    GetHandleVerifier [0x017A5E7C+3921436]
    GetHandleVerifier [0x017CC89E+4079678]
    GetHandleVerifier [0x017CC60C+4079020]
    GetHandleVerifier [0x017C938B+4066091]
    GetHandleVerifier [0x017ACDB4+3949908]
    GetHandleVerifier [0x017ADC6E+3953678]
    GetHandleVerifier [0x017ADBF9+3953561]
    Ordinal0 [0x013B6A8C+92812]
    Ordinal0 [0x013B0572+66930]
    Ordinal0 [0x013B0142+65858]
    GetHandleVerifier [0x016B47B8+2932568]
    GetHandleVerifier [0x014F12EE+1084046]
    GetHandleVerifier [0x014A8B3D+787165]
    GetHandleVerifier [0x014A855B+785659]
    GetHandleVerifier [0x014A8471+785425]
    GetHandleVerifier [0x014DB7B3+995155]
    BaseThreadInitThunk [0x76058494+36]
    RtlAreBitsSet [0x77774328+136]
    RtlAreBitsSet [0x777742F8+88]

Could not open chrome browser.
Client error message:
     Summary: SessionNotCreatedException
     Detail: A new session could not be created.
     Further Details: run errorDetails method
Check server log for further details.
$client
[1] "No sessionInfo. Client browser is mostly likely not opened."

$server
PROCESS 'file4e647424500a.bat', running, pid 22364.

Steps to reproduce the behaviour

Code should be reproduceable as is

Analysis

RSelenium seems to be defaulting to Chrome version 88 and I have no way of updating to that version since it hasn't been released yet as a stable version by Chrome. What can I do in the meantime to revert the RSelenium chrome driver version back to 87.0.4280.88 , which is the latest stable version?