如何使用 Java 使用 Selenium WebDriver 在 Chrome 中处理身份验证弹出窗口

新手上路,请多包涵

我正在尝试在我的一个新 Webdriver 脚本中处理身份验证弹出窗口。我有一个适用于 IE 的有效解决方案,但我在 Chrome 上苦苦挣扎。 IE 就像遵循 [本页] 上的建议一样简单: How to handle authentication popup with Selenium WebDriver using Java 。该线程并未显示适用于 Chrome 的出色解决方案,尽管有几位评论员指出该解决方案不适用于 Chrome。问题是,当您尝试在 Chrome 上执行以下代码时,登录弹出窗口不是警报。

  WebDriverWait wait = new WebDriverWait(driver, 10);
 Alert alert = wait.until(ExpectedConditions.alertIsPresent());
 alert.authenticateUsing(new UserAndPassword(**username**, **password**));

它不是 windows 级别 () 身份验证弹出窗口,该网页只是受密码保护。我知道这个问题在 Stack Overflow 上还有其他几个例子,但我最近没有看到超过 2 年的问题。我希望 2017 年现在有更好的解决方案。提前致谢。

原文由 Travis Needham 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 529
2 个回答

*edit Chrome 不再支持这个。

这不是可以通过在地址前加上用户名和密码来处理的“受限”弹出窗口吗?

而不是 driver.get("http://www.example.com/");driver.get("http://username:password@www.example.com");

原文由 Grzegorz Górkiewicz 发布,翻译遵循 CC BY-SA 4.0 许可协议

可能有助于其他人在 chrome 扩展的帮助下解决 chrome 中的这个问题。感谢@SubjectiveReality 给了我这个想法。

如果同一服务器执行身份验证并托管应用程序,则将用户名和密码作为 url 的一部分发送,如 https://username:password@www.mytestsite.com 可能会有所帮助。然而,大多数企业应用程序都具有公司范围的身份验证,应用程序服务器可能会将请求重新路由到身份验证服务器。在这种情况下,在 URL 中传递凭据将不起作用。

这是解决方案:

#Step1:创建 chrome 扩展程序#

  1. 创建一个名为“扩展名”的文件夹
  2. 在“扩展”文件夹中创建一个名为“manifest.json”的文件。将以下代码复制到文件中并保存。

{ “name”:“Webrequest API”, “version”:“1.0”, “description”:“处理身份验证窗口的扩展”, “permissions”:[“”,“webRequest”,“webRequestBlocking”], “背景”:{“脚本”:[“webrequest.js”]},“清单版本”:2}

  1. 在“扩展”文件夹中创建一个名为“webrequest.js”的文件,并将下面的代码复制粘贴到文件中并保存。
 chrome.webRequest.onAuthRequired.addListener(
function handler(details){
 return {'authCredentials': {username: "yourusername", password: "yourpassword"}};
},
{urls:["<all_urls>"]},
['blocking']);

  1. 打开 chrome 浏览器,转到 chrome://extensions 并打开开发者模式

  2. 单击“打包扩展”,选择根目录作为“扩展”并打包扩展。它应该创建一个扩展名为“.crx”的文件

#Step2:将扩展添加到您的测试自动化框架中#

  1. 将 .crx 文件复制到您的框架中
  2. 配置您的 webdriver 创建以加载扩展,例如
options.addExtensions(new File("path/to/extension.crx"));
options.addArguments("--no-sandbox");

  1. 调用您的网络驱动程序和应用程序 URL
  2. 您不会看到由上述扩展程序处理的身份验证弹出窗口

快乐测试!

参考:

http://www.adambarth.com/experimental/crx/docs/webRequest.html#apiReference https://developer.chrome.com/extensions/webRequest#event-onAuthRequired chrome.webRequest.onAuthRequired 侦听器 https://gist。 github.com/florentbr/25246cd9337cebc07e2bbb0b9bf0de46

原文由 Bhuvanesh Mani 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题