编辑:我通过使用">AutoIt"解决了这个问题。然而,正如亚历克斯所说,AutoIt依赖于平台,我将尝试实现它。
我有链接 A,我需要在其中输入我的电子邮件 ID,然后它会自动重定向到链接 B,该链接有一个 javascript 弹出窗口,需要电子邮件 ID 和密码才能将我重定向到所需的页面。这就是我迄今为止所做的。 我尝试在链接 A 中传递凭据,但它不起作用。 我没有从链接 A 转到链接 B,而是复制了链接 B 并随之传递了凭据。我遇到服务器错误。 我尝试使用 sikuli 模式和屏幕类,但它说"找不到错误路径",我尝试寻找解决方案,但由于它被弃用或其他原因而无法找到。
这是我的代码
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://linkA.com");
driver.findElement(By.xpath("//*[@id="uemail"]")).sendKeys("emailID@email.com");
driver.findElement(By.xpath("//*[@id="button"]/div[2]/button")).click();
在此代码之后,我被重定向到链接 B,JavaScript 弹出窗口实际上位于该链接 B。直到这里一切都很好。
我尝试了这些东西,而不是最后 3 行。
driver.get("https://emailID:password@linkA.com");
和
driver.get("https://emailID:password@linkB.com");
我相信后者不是 JavaScript 弹出窗口,而是不受 Web 驱动程序控制的基本授权弹出窗口。您需要设置一个代理,将Authorization
标头添加到请求中,并分配以 Base64 编码的username:password
对。
以下是有关如何应用 Browsermob 代理库来解决基本身份验证问题的一些详细信息。
由于安全原因,您到目前为止尝试的内容实际上已被弃用,并且大多数现代浏览器不再受支持。