You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决R Selenium Chrome版本不匹配:安装并使用Chromium

问题描述

我使用R编写的Selenium脚本在2023年8月前可正常运行,但11月开始报错。相关脚本及错误信息如下:

原运行脚本

library(RSelenium)
library(wdman)
library(netstat)

selenium()
# checking Selenium Server versions:
#BEGIN: PREDOWNLOAD
#BEGIN: DOWNLOAD
#BEGIN: POSTDOWNLOAD
#....
#BEGIN: DOWNLOAD
#BEGIN: POSTDOWNLOAD
#$process
#PROCESS 'file27547a8c5781.bat', running, pid 14124.

binman::list_versions("chromedriver")
#$win32
#[1] "113.0.5672.63" "114.0.5735.16" "114.0.5735.90"

seleium_object <- selenium(retcommand = T, check = F)

remote_driver <- rsDriver(browser = "chrome", chromever = "119.0.6045.105", verbose = F, port = free_port())

报错信息

Error in chrome_ver(chromecheck[["platform"]], chromever) : 
  version requested doesnt match versions available = 113.0.5672.63,114.0.5735.16,114.0.5735.90

后续待执行脚本(当前无法运行)

# rest of R/selenium script (currently does not work)
#remDr =  remote_driver
#remDr$navigate("https://www.google.com/maps")

# Search for the CN Tower
#search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
#search_box$sendKeysToElement(list("CN Tower", key = "enter"))

#Sys.sleep(5)

# Get the URL of the current page
#url <- remDr$getCurrentUrl()[[1]]

# Extract the longitude and latitude from the URL
#long_lat <- gsub(".*@(-?[0-9.]+),(-?[0-9.]+),.*", "\1,\2", url)
#long_lat <- unlist(strsplit(long_lat, ","))

已知使用Chromium替代Google Chrome可解决版本匹配问题,但不清楚如何通过R命令安装Chromium,以及如何修改脚本适配Chromium。


解决步骤

一、通过R命令安装Chromium

Windows系统

调用system()执行winget命令完成安装:

# 安装Chromium
system("winget install -e --id Google.Chromium", wait = TRUE)

# 验证安装
system("winget list Google.Chromium", wait = TRUE)

Linux(Debian/Ubuntu)

# 安装Chromium
system("sudo apt install chromium-browser -y", wait = TRUE)

# 验证安装
system("chromium-browser --version", wait = TRUE)

MacOS

# 安装Chromium(需先安装Homebrew)
system("brew install chromium", wait = TRUE)

# 验证安装
system("chromium --version", wait = TRUE)

二、修改R Selenium脚本适配Chromium

library(RSelenium)
library(wdman)
library(netstat)

# --------------------------
# 1. 获取Chromium版本并匹配驱动
# --------------------------
# Windows系统获取版本
chromium_version <- system("wmic datafile where name='C:\\Program Files\\Chromium\\Application\\chrome.exe' get Version /value", intern = TRUE)
chromium_version <- gsub("Version=", "", chromium_version[grepl("Version=", chromium_version)])
# Linux系统替换为:system("chromium-browser --version", intern = TRUE)
# MacOS系统替换为:system("chromium --version", intern = TRUE)

# 提取主版本号,让wdman自动匹配对应chromedriver
chromium_major_version <- strsplit(chromium_version, "\\.")[[1]][1]

# --------------------------
# 2. 启动适配Chromium的Selenium驱动
# --------------------------
remote_driver <- rsDriver(
  browser = "chrome",
  chromever = chromium_major_version,
  verbose = FALSE,
  port = free_port(),
  extraCapabilities = list(
    chromeOptions = list(
      # 根据系统替换Chromium路径
      # Windows: "C:\\Program Files\\Chromium\\Application\\chrome.exe"
      # Linux: "/usr/bin/chromium-browser"
      # MacOS: "/Applications/Chromium.app/Contents/MacOS/Chromium"
      binary = "C:\\Program Files\\Chromium\\Application\\chrome.exe"
    )
  )
)

# --------------------------
# 3. 执行原有业务逻辑
# --------------------------
remDr <- remote_driver$client
remDr$navigate("https://www.google.com/maps")

# 搜索CN Tower
search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$sendKeysToElement(list("CN Tower", key = "enter"))

Sys.sleep(5)

# 获取当前页面URL
url <- remDr$getCurrentUrl()[[1]]

# 提取经纬度(修复转义符问题)
long_lat <- gsub(".*@(-?[0-9.]+),(-?[0-9.]+),.*", "\\1,\\2", url)
long_lat <- unlist(strsplit(long_lat, ","))

# --------------------------
# 4. 关闭资源
# --------------------------
remDr$close()
remote_driver$server$stop()

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:25:28