Java环境下Selenium WebDriver运行首测时遇未知错误求解决
Hey,我来帮你搞定这个Selenium的问题!你遇到的错误和日志信息我都梳理过了,咱们一步步拆解解决:
先明确你遇到的问题细节:
异常信息:
Selenium WebDriverException: unknown error: call function result missing 'value' using Java
启动日志:Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 48523 Only local connections are allowed.
log4j警告:log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig
1. 核心问题:ChromeDriver与Chrome版本不兼容
你当前使用的ChromeDriver是2.33,这是个非常老旧的版本,对应Chrome浏览器60-62左右的版本。如果你的Chrome是新版本,两者必然会出现兼容性冲突,这就是触发call function result missing 'value'的最主要原因。
解决步骤:
- 先查看Chrome版本:打开Chrome→右上角三个点→帮助→关于Google Chrome,就能看到当前浏览器的版本号(比如118.0.5993.70)
- 下载对应版本的ChromeDriver:必须保证ChromeDriver的主版本和Chrome完全一致(Chrome是118.x,就下载ChromeDriver 118.x)
- 替换项目中的旧ChromeDriver,同时确保代码里指定的ChromeDriver路径指向新文件
2. 检查WebDriver初始化代码
有时候初始化时的小配置遗漏也会引发这个错误,给你一个靠谱的初始化示例参考:
// 如果没把ChromeDriver加入系统环境变量,先手动指定文件路径 System.setProperty("webdriver.chrome.driver", "你的新ChromeDriver文件绝对路径"); // 配置ChromeOptions避免常见兼容性坑 ChromeOptions options = new ChromeOptions(); options.addArguments("--no-sandbox"); // 解决Linux环境下的权限问题,Windows也可兼容 options.addArguments("--disable-dev-shm-usage"); // 避免临时文件资源不足的问题 options.addArguments("--start-maximized"); // 可选,启动时自动最大化窗口 WebDriver driver = new ChromeDriver(options);
3. 消除log4j警告
这个警告不会影响测试运行,但看着闹心,解决起来很简单:
在项目的src/main/resources目录下新建一个log4j.properties文件,填入以下内容:
log4j.rootLogger=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
这样log4j就能正常初始化,警告就会消失了。
内容的提问来源于stack exchange,提问作者Meghasri

