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

Selenium 4.18.1中selenium-manager.exe被拦截,如何改用WebDriverManager?

问题描述
  • 环境信息:
    • Eclipse搭建Selenium Maven项目,使用Selenium 4.18.1版本
    • Java版本11,Chrome及ChromeDriver已自动升级至122版本,无法降级
    • pom.xml配置(注:原WebDriverManager依赖groupId存在拼写错误,正确应为io.github.bonigarcia):
      <!-- Selenium核心依赖 -->
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>4.18.1</version>
      </dependency>
      <!-- WebDriverManager依赖 -->
      <dependency>
          <groupId>io.github.bonigarcia</groupId>
          <artifactId>webdrivermanager</artifactId>
          <version>5.6.0</version>
          <scope>test</scope>
      </dependency>
      
  • 报错内容:

    Exception in thread "main" org.openqa.selenium.remote.NoSuchDriverException: Unable to obtain: Capabilities {browserName: Chrome, goog:chromeOptions: {args: [], extensions: []}}, error Failed to run command: [--browser, chrome, --language-binding, java, --output, json]
    Build info: version: '4.18.1', revision: 'b1d3319b48'
    System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.22'
    Driver info: driver.version: ChromeDriver

  • 核心障碍:selenium-manager.exe因组织安全策略拦截(存在未修复Bug),更换程序位置、降级Selenium均无效,且必须保留当前Selenium版本以兼容Chrome 122
  • 现有测试代码:
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class testRun {
       public static void main(String[] args) {
           Webdriver driver = new ChromeDriver();
           driver.get("https://www.google.com");
           driver.getTitle();
           WebElement authenticate = driver.findElement(By.id("login-submit"));
           authenticate.click();
           System.out.println("test has ended");
           driver.quit();
        }
    }
    
  • 疑问:能否绕过selenium-manager.exe,改用WebDriverManager解决驱动管理问题?
解决方案

完全可以通过以下步骤绕过Selenium自带的Selenium Manager,改用WebDriverManager实现驱动管理:

  1. 禁用Selenium自带管理器
    通过系统属性关闭Selenium Manager的自动运行,避免触发被拦截的exe程序:

    System.setProperty("selenium-manager.enabled", "false");
    

    也可通过Eclipse的JVM参数添加 -Dselenium-manager.enabled=false 实现全局禁用。

  2. 修改测试代码,集成WebDriverManager
    修正原代码的拼写错误(Webdriver 改为 WebDriver),添加WebDriverManager的驱动初始化逻辑,同时调整测试步骤(Google首页无login-submit元素,替换为合理操作):

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import io.github.bonigarcia.wdm.WebDriverManager;
    
    public class testRun {
       public static void main(String[] args) {
           // 禁用Selenium自带管理器
           System.setProperty("selenium-manager.enabled", "false");
           // 用WebDriverManager自动匹配并下载ChromeDriver
           WebDriverManager.chromedriver().setup();
           
           WebDriver driver = new ChromeDriver();
           try {
               driver.get("https://www.google.com");
               System.out.println("页面标题:" + driver.getTitle());
               // 示例操作:搜索框输入内容(可根据需求修改)
               // WebElement searchBox = driver.findElement(By.name("q"));
               // searchBox.sendKeys("Selenium WebDriverManager");
           } finally {
               driver.quit();
               System.out.println("测试已结束");
           }
       }
    }
    
  3. 验证效果
    运行修改后的代码,WebDriverManager会自动识别Chrome版本,下载匹配的ChromeDriver并配置环境,全程无需依赖selenium-manager.exe,即可正常启动Chrome执行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:24:51