[英]Determine popup/new window type so I can interact with it in selenium webdriver
这可能是一个菜鸟问题,但我不知道如何确定要与之交互的弹出窗口的类型,因此我可以掌握足够的信息来使用Selenium Webdriver自动执行该操作。
我以为这只是一个弹出窗口,但是当使用(似乎是)弹出窗口的标准处理方式时,Selenium JUnit测试会冻结单击按钮的实例。
String mainWindowHandle = driver.getWindowHandle();
//P2: Click on the element that opens the popup
driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();
Set s=driver.getWindowHandles();
Iterator ite=s.iterator();
while(ite.hasNext()){
System.out.println("Current ite = " + ite.next().toString());
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mainWindowHandle)){
driver.switchTo().window(popupHandle);
System.out.println("reached popup window? Now perform the login procedure before returning to the original window");
driver.switchTo().window(mainWindowHandle);
}
}
此处描述了此代码,这是公认的答案。 我还看到了此代码的许多其他类似示例,但是在我的应用程序中,硒测试挂起了
driver.findElement(By.xpath("//a[contains(text(),'Login')]")).click();
它只是等待我输入登录信息,直到我手动输入登录信息,测试才会挂起。 如果输入信息,测试将继续。 我想让这段代码找到弹出窗口的句柄(并最终)用用户名和密码填充它,然后单击“确定”。 虽然我可能没有处理传统的弹出窗口吗? 我怎么知道
此登录按钮是html <a href="/trac/login">Login</a>
的以下元素
使用硒RC时我遇到了同样的问题。 我使用了如下所示的try catch块,它可以帮助我解决问题。 希望它会有用。
// webdriver代码,直到单击弹出链接
try {
selenium.waitForPopUp("myWindow","3000");
}
catch(Exception e){
selenium.selectPopUp("myWindow");
selenium.windowFocus();
//需要在弹出窗口中执行的活动***
//将焦点移回主窗口的代码
String[] winFocus;
String winTitle;
winFocus = selenium.getAllWindowTitles();
winTitle = winFocus[0];
selenium.selectWindow(winTitle);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.