如何在Java脚本弹出窗口中输入凭据?我们无法通过链接中的凭据

时间:2019-12-05 11:48:23

标签: java selenium selenium-webdriver selenium-chromedriver

编辑:我使用“ AutoIt ”解决了该问题。但是,正如Alex所说的,AutoIt依赖于平台,我将尝试实现它。

我有链接A,我需要在其中输入我的电子邮件ID,然后它会自动重定向到链接B,该链接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弹出窗口,直到这里一切都很好。

我尝试了这些,而不是最后三行。

driver.get("https://emailID:password@linkA.com");

还有

driver.get("https://emailID:password@linkB.com");

1 个答案:

答案 0 :(得分:1)

我相信后者不是JavaScript弹出窗口,而是不受Web驱动程序控制的基本授权弹出窗口。您需要设置一个代理,该代理将向您的请求添加Authorization头,并分配以Base64编码的username:password对。

有关how to apply Browsermob Proxy library to address Basic auth issue的一些细节。

由于安全原因,到目前为止,您尝试过的操作实际上已过时,大多数现代浏览器都不再支持。