【发布时间】:2014-01-30 10:19:53
【问题描述】:
我有一个 Web 应用程序,当我单击保存按钮时,它会启动保存窗口(模式)。这个窗口需要 10 秒才能完全加载(我可以通过等待来解决这个问题)。 在完成保存之前,我需要在此窗口中执行一些操作。
我面临的问题是 - 模式窗口启动的那一刻,我无法使用 driver.SwitchTo() 或 driver.Manage().GetAllWindowHandles() 等。我用以下代码行确认了这一点。
driver.findElement(By.xpath("//*[@id='toolbar']/a[1]")).click();
// After the above line is executed, the Popup gets launched
Set<String> sWindowHandles = driver.getWindowHandles();
System.out.println("Popup");
System.out.println(driver.getWindowHandles().size()); // This always prints "1"
在我明确关闭弹出窗口之前,上面的 3 行根本不会执行(或者至少不会执行很长时间)。
当我无法找到窗口的处理程序时,如何处理存在于保存窗口(模态)中的某些控件?
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
不起作用,因为在模式窗口打开后(GetWindowHandles 只有在它启动后才有意义),后续行根本不会执行。 我陷入了僵局。请帮帮我。
【问题讨论】:
-
你可能看错了——网页上的模态对话框通常不是单独的窗口;它们主要实现为页面上的 div 覆盖。分享您页面的 HTML,也请分享模态对话框的 HTML。
-
如果对话框是使用
showModalDialog启动的,你应该看看Issue 284。从下往上开始阅读可能的解决方案。
标签: selenium modal-dialog selenium-webdriver