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

Selenium WebDriver异常:特定URL无法确定加载状态问题求助

解决Selenium加载site3时出现的"missing or invalid 'entry.level'"错误

这个问题我之前帮团队排查过类似的情况,结合你描述的现象——site1、site2正常,唯独site3卡住不打印消息最后报这个错,大概率是ChromeDriver与Chrome版本不兼容或者页面加载逻辑触发了Selenium的等待bug,咱们一步步来解决:

1. 优先排查ChromeDriver与Chrome版本匹配问题

这个entry.level错误最常见的诱因就是ChromeDriver和Chrome浏览器版本不匹配。Selenium对ChromeDriver的版本要求非常严格,必须和Chrome的大版本完全对应(比如Chrome 114.x就得用ChromeDriver 114.x)。

解决步骤:

  • 先查看你的Chrome版本:打开Chrome → 右上角三个点 → 设置 → 关于Chrome,记下版本号(比如114.0.5735.198)
  • 替换为对应版本的ChromeDriver:如果是手动管理驱动,就下载和Chrome版本完全一致的ChromeDriver;如果用Maven,推荐用webdrivermanager自动管理,不用手动下载,在pom.xml里添加依赖:
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.4.1</version>
        <scope>test</scope>
    </dependency>
    
    然后在测试代码开头加上:
    WebDriverManager.chromedriver().setup();
    
    它会自动检测你的Chrome版本并下载匹配的驱动,省得手动折腾。

2. 调整页面加载策略,避免无限等待

默认情况下,Selenium会采用normal加载策略——等待页面完全加载(所有资源、JS执行完成)才继续执行。但有些网站可能有特殊的加载逻辑,比如无限循环的JS、未完成的第三方资源加载,导致Selenium一直卡着等,最后触发这个错误。

解决方法:把加载策略改成eager(等待DOM加载完成就继续)或者none(不等待加载,直接执行后续操作):

ChromeOptions options = new ChromeOptions();
// 用EAGER模式,DOM加载完就继续,不用等所有资源
options.setPageLoadStrategy(PageLoadStrategy.EAGER);
WebDriver driver = new ChromeDriver(options);

这样脚本在页面基本结构加载完成后就会执行System.out.println("opened the URL"),不会卡在等待完全加载的状态。

3. 排查页面异常JS或资源阻塞

site3的页面可能存在有问题的JavaScript代码,或者某些第三方资源(比如广告、统计脚本)加载失败但一直在重试,导致Chrome的加载状态无法被Selenium识别,从而抛出错误。

可以先禁用JS来排查是不是JS导致的:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-javascript");
WebDriver driver = new ChromeDriver(options);

如果禁用JS后能正常运行,那就是页面JS的问题,可以进一步排查页面里的异常脚本,或者在测试代码里用显式等待代替页面加载等待,比如等待某个关键元素出现:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
driver.get("https://site3.com");
// 等待页面标题或者某个核心元素出现
wait.until(ExpectedConditions.titleContains("Site3的标题"));
System.out.println("opened the URL");

4. 替换隐式等待为显式等待

如果你之前用了隐式等待(driver.manage().timeouts().implicitlyWait(...)),这种全局等待在特殊页面上可能会和显式等待冲突,或者无法适配site3的加载逻辑。建议去掉隐式等待,改用显式等待针对具体元素做等待,这样更灵活也更可靠。

先从版本匹配开始排查,这是最快速解决问题的路径,如果版本没问题再尝试调整加载策略和等待方式,应该就能解决这个问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:15:20