RSelenium调用Chrome时出现SessionNotCreatedException问题求助
我为此问题折腾一周,检查了Chrome、Chromedriver、Geckodriver、Selenium.jar及R的所有版本,还替换了C盘中多个RSelenium文件夹。为何R无法识别Chromedriver并返回SessionNotCreatedException错误?如何解决?这是我的大学期末作业内容,我甚至无法开始,十分急切。我只想使用Chrome,不想切换到Firefox。
环境信息
- OS:Windows 11
- R版本:4.1.3
- IDE:Rstudio
- Chrome:107.0.5304.107
- Geckodriver:geckodriver-v0.31.0-win64
- Chromedriver:107.0.5304.62
- Selenium:selenium-server-standalone-4.0.0-alpha-1
- JAVA:java version "17.0.4.1"
R代码
library(rvest) library(dplyr) library(httr) library(RSelenium) remDr = remoteDriver( remoteServerAddr="localhost", port=4445L, browserName="chrome") remDr$open()
错误信息
Selenium message:Unable to create new service: ChromeDriverService Build info: version: '4.0.0-alpha-1', revision: 'd1d3728cae', time: '2019-04-24T16:15:24' System info: host: 'JIMMMMM', ip: 'xxx.xxx.x.x', os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.4.1' Driver info: driver.version: unknown Error: Summary: SessionNotCreatedException Detail: A new session could not be created. Further Details: run errorDetails method
CMD启动命令及日志
C:\Windows\System32>cd C:\r-selenium C:\r-selenium>java -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-4.0.0-alpha-1.jar -port 4445 15:50:22.250 INFO [GridLauncherV3.parse] - Selenium server version: 4.0.0-alpha-1, revision: d1d3728cae 15:50:22.384 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server on port 4445 15:50:22.816 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet 15:50:23.195 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4445 15:50:35.377 INFO [ActiveSessionFactory.apply] - Capabilities are: { "browserName": "chrome", "javascriptEnabled": true, "nativeEvents": true, "version": "" } 15:50:35.387 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService) 15:50:40.294 INFO [ActiveSessionFactory.apply] - Capabilities are: { "browserName": "chrome", "javascriptEnabled": true, "nativeEvents": true, "version": "" } 15:50:40.297 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
已执行的排查步骤
- 检查所有所需程序版本匹配性
- 通过
binman::list_versions("chromedriver")确认Chromedriver与Chrome版本匹配 - 重新安装RSelenium库、Geckodriver、Chromedriver、Selenium
解决方案
1. 修复Selenium启动命令,指定Chromedriver路径
你启动Selenium服务器时仅配置了Geckodriver路径,未指定Chromedriver的系统属性,导致Selenium无法找到Chrome驱动。修改启动命令,添加-Dwebdriver.chrome.driver参数:
java -Dwebdriver.gecko.driver="geckodriver.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-4.0.0-alpha-1.jar -port 4445
若chromedriver.exe不在Selenium jar包同目录,需填写完整绝对路径,比如-Dwebdriver.chrome.driver="C:\r-selenium\chromedriver.exe"
2. 升级Selenium服务器版本
你使用的Selenium Server是2019年的4.0.0-alpha-1早期版本,对Windows 11和高版本Chrome兼容性极差。建议更换为Selenium Server 4.10.0或更高稳定版本(与Chrome 107兼容)。
3. 验证Chromedriver可用性
在CMD中直接运行chromedriver.exe,若输出如下内容,说明驱动本身正常:
Starting ChromeDriver 107.0.5304.62 (1eec40d3a5764881c92085aaee66d25075c159aa-refs/branch-heads/5304@{#942}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.
若启动报错,说明驱动损坏,需重新下载对应版本的Chromedriver。
4. 确保Chromedriver路径与权限无问题
- 避免将
chromedriver.exe放在含空格的目录(如Program Files),当前C:\r-selenium路径符合要求 - 右键
chromedriver.exe→属性→安全,确认当前用户拥有读取和执行权限
5. 优化RSelenium初始化代码(可选)
在remoteDriver中直接指定Chrome安装路径,减少对Selenium Server配置的依赖:
remDr = remoteDriver( remoteServerAddr="localhost", port=4445L, browserName="chrome", extraCapabilities = list( chromeOptions = list( binary = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" # 替换为你的Chrome实际安装路径 ) ) )
内容的提问来源于stack exchange,提问作者K.K.SAN

