Windows10下Selenium无法创建新会话问题求助(JDK22+ChromeDriver128)
问题分析与解决方案
核心错误点
你的代码和配置存在几个明确问题,是导致驱动进程过早终止的主要原因:
- 系统属性键拼写错误:
webdriver.chrome.drive应为webdriver.chrome.driver,拼写错误会导致Selenium无法定位到ChromeDriver程序。 - 使用特权端口:端口7是Windows系统保留的特权端口,普通用户无权限绑定该端口,直接导致驱动服务启动失败。
- 错误的等待方法:
driver.manage().wait(time)是Java Object类的原生wait方法,并非Selenium的等待API,该用法会抛出非法监视器状态异常。 - 重复配置浏览器版本:同时调用
cop.setBrowserVersion()和cop.setCapability("browserVersion", ...)属于冗余操作,可能引发配置冲突。
修正后的完整代码
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import java.time.Duration; public class LunchBrowser { public static void main(String[] args) { // 修正系统属性键的拼写错误 System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\Testing\\chromedriver-win64\\chromedriver.exe"); ChromeOptions cop = new ChromeOptions(); cop.setBinary("C:\\Program Files\\chrome-win64\\chrome.exe"); cop.addArguments("--remote-allow-origins=*"); cop.addArguments("--ignore-certificate-errors"); // 仅保留一种版本配置方式,也可省略(Selenium会自动匹配兼容版本) cop.setBrowserVersion("128.0.6613.84"); // 使用非特权端口(推荐用ChromeDriver默认端口9515,或其他大于1024的空闲端口) WebDriver driver = new ChromeDriver(cop); // 替换错误等待方式,使用Selenium标准隐式等待 driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); driver.manage().window().maximize(); driver.get("https://www.google.com/"); // 业务逻辑代码... // 最后务必关闭驱动进程 driver.quit(); } }
额外排查步骤
如果修正后问题仍存在,执行以下操作:
- 验证版本一致性:打开Chrome for Testing,在地址栏输入
chrome://version/,确认浏览器版本与ChromeDriver完全匹配(包括小版本号)。 - 检查文件权限:右键点击
chromedriver.exe,进入「属性→安全」,确保当前用户拥有「读取和执行」权限。 - 清理残留进程:打开任务管理器,结束所有
chrome.exe和chromedriver.exe进程后重新运行代码。 - 添加沙箱禁用参数:在ChromeOptions中加入
--no-sandbox,部分Windows环境下浏览器沙箱会阻碍启动。 - 调整驱动路径:若路径包含空格或特殊字符,将驱动移动到无空格路径(如
C:\\Testing\\chromedriver-win64\\chromedriver.exe)。
内容的提问来源于stack exchange,提问作者Amaal Absi
相关产品推荐
相关产品推荐

