首页 > 解决方案 > 在新窗口中弹出警报

问题描述

如何在警报中填写用户名和密码字段?当我单击一个链接时,会打开另一个带有警报身份验证的窗口。我无法切换到警报。我得到超时异常。我使用了这段代码:

// two windows on browser
Set<String> window = driver.getwindowhandles();    
Iterator index = window.ierator();
String Parentwindow = index.next();
String Childwindow = index.next();

driver.switchto().window(Childwindow);

// popup on child window    
Alert alert = driver.switchto().alert();
alert.sendkeys("username");    
alert.sendkeys("password");

标签: javaselenium-webdriver

解决方案


这个问题之前已经回答过了。Selenium 具有与身份验证弹出窗口一起使用的内置功能。

使用隐式Wait(这Wait会等到给定条件变为的时间用完true),您可以使用以下方法访问Alert并传递登录凭据authenticateUsing()

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

另一种方法是在访问 URL 时直接提供用户名和密码,这Alert完全绕过了:

driver.get("http://UserName:Password@Example.com");

请参考这个问题:How to handle authentication popup with Selenium WebDriver using Java


推荐阅读