You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Selenium 3.141.59搭配Chrome 78基础认证导航请求取消问题求助

解决Chrome 78 + Selenium 3.141.59中基础认证弹窗消失、导航请求被取消的问题

Chrome 78对基础认证的弹窗触发机制做了调整,这正是导致你升级后流程失效的核心原因。结合你的环境(ChromeDriver 78.0.3904.70 + Selenium 3.141.59),这里有几个实用的解决方案:

方案1:将认证信息直接嵌入URL(最推荐)

这是绕过基础认证弹窗最稳定的方式,Chrome会自动解析URL中的账号密码完成登录,完全不需要依赖弹窗交互。修改你的导航代码如下:

WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("test-type");
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);

// 替换为你的实际认证信息和应用地址
String username = "your-username";
String password = "your-password";
String appUrl = "application url";
// 拼接带认证信息的URL(处理http前缀避免重复)
String authenticatedUrl = "http://" + username + ":" + password + "@" + appUrl.replaceFirst("^http://", "");
driver.navigate().to(authenticatedUrl);

方案2:通过Chrome命令行参数强制触发认证弹窗

如果嵌入URL的方式不符合你的需求,可以尝试添加认证白名单参数,让Chrome强制弹出认证窗口,再通过Selenium的Alert类处理:

WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("test-type");
options.addArguments("disable-infobars");
// 替换为你的应用域名,确保浏览器识别需要认证的站点
options.addArguments("--auth-server-whitelist=*.your-app-domain.com");
options.addArguments("--auth-negotiate-delegate-whitelist=*.your-app-domain.com");
driver = new ChromeDriver(options);
driver.navigate().to("application url");

// 捕获并处理认证弹窗
try {
    Alert authAlert = driver.switchTo().alert();
    authAlert.sendKeys(username + Keys.TAB + password);
    authAlert.accept();
} catch (NoAlertPresentException e) {
    // 弹窗未出现时的容错处理
    e.printStackTrace();
}

方案3:临时降级Chrome版本(应急方案)

如果上述方案都无法快速生效,你可以暂时降级回Chrome 76版本,搭配对应的ChromeDriver(76.0.3809.126),这样就能恢复到之前正常的工作流程,同时慢慢排查新版本的适配问题。

额外注意事项

  • 务必保证ChromeDriver版本和Chrome浏览器版本完全匹配,这是Selenium+Chrome组合稳定运行的核心前提;
  • 部分环境下,URL嵌入认证信息可能会被浏览器安全策略拦截,此时可以检查Chrome的安全设置,或者切换到方案2。

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

火山引擎 最新活动