在新窗口中弹出警报

时间:2019-04-16 05:48:40

标签: java selenium-webdriver

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

// 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");

1 个答案:

答案 0 :(得分:1)

这个问题已经被回答过了。 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