1

我想在测试环境中进行一些 Java/Selenium4 测试自动化,该测试环境受身份验证弹出窗口的保护。这不是警报,而是 Chrome 弹出窗口:screenshot

在我们的框架中,我们有两种选择:

  1. 您在本地机器上运行测试。我们使用 org.openqa.selenium.chrome.ChromeDriver 类来驱动 Chrome。
  2. 测试在我们的 CI/docker 机器上运行(使用 maven 和 selenium/chrome 容器)。然后我们使用 org.openqa.selenium.remote.RemoteWebDriver 类从 maven 容器中驱动 Chrome(在 selenium 容器中)。

此设置一直运行良好。然而,这个弹出窗口被证明是一个相当大的挑战。我找到了选项 1 的解决方案:

((HasAuthentication)driver).register(UsernameAndPassword.of("username","password"));

这不适用于选项 2,因为 RemoteWebDriver 类显然没有实现 HasAuthentication 接口:

java.lang.ClassCastException: class org.openqa.selenium.remote.RemoteWebDriver cannot be cast to class org.openqa.selenium.HasAuthentication (org.openqa.selenium.remote.RemoteWebDriver and org.openqa.selenium.HasAuthentication are in unnamed module of loader 'app')

这意味着这个解决方案不会在我们的 CI 设置上运行,现在我被卡住了。我看到人们使用自定义 Chrome 扩展作为解决方法,但我希望有一个更简单/更好的解决方案......

如何使用 RemoteWebDriver Chrome 驱动程序类与 Selenium4/Java 的浏览器弹出窗口交互?

4

0 回答 0