首个Selenium+Java脚本无法运行,页面空白且报403错误求助
问题排查与解决方案
环境信息
- IDE:Eclipse
- Java版本:17
- Selenium版本:4.8.1
- ChromeDriver版本:111.0.5563.64
- Chrome浏览器版本:111.0.5563.65
- 系统环境变量:
C:\Program Files\Java\jdk-19\binC:\az\ChromeC:\az\Selenium
- Eclipse构建路径:
- Modulepath:JRE System Library[Java 17]
- Classpath:
chromedriver.exe(路径:C:\az\Chrome)selenium-java-4.8.1.jar(路径:C:\az\Selenium)selenium-server-4.8.1.jar(路径:C:\az\Selenium)
问题现象
运行Selenium脚本后,Chrome浏览器显示空白页面,控制台输出403 Forbidden警告:
Starting ChromeDriver 111.0.5563.64 (c710e93d5b63b7095afe8c2c17df34408078439d-refs/branch-heads/5563@{#995}) on port 40083 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Mar 19, 2023 12:46:58 PM org.openqa.selenium.remote.http.WebSocket$Listener onError WARNING: Invalid Status code=403 text=Forbidden
问题原因
- ChromeOptions未传入ChromeDriver实例:代码中配置了
--remote-allow-origins=*参数以规避跨域限制,但未将配置对象传递给ChromeDriver构造方法,导致安全限制生效,触发403错误。 - ChromeDriver与Chrome版本不匹配:两者主版本一致但小版本号差1(64 vs 65),可能存在兼容性问题。
- 不必要的Classpath配置:
chromedriver.exe作为可执行文件无需加入Java类路径,该配置无意义且可能引发混淆。 - 过时的驱动配置方式:Selenium 4.6+已支持自动驱动管理,手动设置
webdriver.chrome.driver并非最优解。
解决方案
1. 修复ChromeOptions传递问题
修改代码,将配置好的ChromeOptions传入ChromeDriver构造方法,同时移除不必要的--whitelisted-ips参数(本地运行无需该配置):
package chromepackage; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class ChromeClass { public static void main(String[] args) { ChromeOptions ops = new ChromeOptions(); ops.addArguments("--remote-allow-origins=*"); // 传入配置对象初始化ChromeDriver WebDriver driver = new ChromeDriver(ops); driver.get("https://www.google.com/"); } }
2. 匹配ChromeDriver与Chrome版本
下载与Chrome浏览器版本(111.0.5563.65)完全一致的ChromeDriver,替换C:\az\Chrome目录下的旧驱动文件。
3. 启用Selenium自动驱动管理(推荐)
Selenium 4.6+内置Selenium Manager,可自动下载、匹配并管理驱动,无需手动设置路径:
- 删除代码中的
System.setProperty("webdriver.chrome.driver", "...")行 - 确保项目依赖的
selenium-java-4.8.1.jar已包含Selenium Manager(默认已包含) - 使用步骤1中的简化代码即可
4. 清理Eclipse构建路径
从Classpath中移除chromedriver.exe条目,驱动文件无需加入Java类路径,仅需保证路径可被Selenium Manager识别或手动配置正确即可。
内容的提问来源于stack exchange,提问作者Andrei Vartic
相关产品推荐
相关产品推荐

