我使用硒2,浏览器版本为IE11。在处理弹出窗口时遇到问题。
场景1:
driver.findElement(By.id("I create modal window")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());
我得到的输出为 2 。
场景:2 (具有相同的概念)
driver.findElement(By.id("I create pop up")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());
我得到的输出为 1 。
我无法切换到弹出窗口。有时,弹出窗口响应就像未连接一样,而且弹出窗口的大小比应有的小。
会有什么问题
注意:元素ID不是真实的
答案 0 :(得分:0)
从您的问题来看,您似乎想切换到弹出式窗口。
窗口处理程序用于在浏览器窗口之间切换。
Alert handler用于在弹出消息之间切换。
如果您想接受/是/确定警报:
Alert alert = driver.switchTo().alert();
alert.accept();
如果您要关闭/取消/取消警报:
Alert alert = driver.switchTo().alert();
alert.dismiss();
答案 1 :(得分:0)
您必须首先检查其窗口或警报。
只需尝试检查该弹出窗口中的元素,如果您能够检查弹出窗口中的元素,则可以使用其窗口,因此请使用switch to window命令,如果没有,则它会很警报。因此,请使用switch to alert命令(在另一个答案中提供)
答案 2 :(得分:0)
警报类型不同,应按以下方式进行不同处理。
Windows类型: 如果弹出窗口是在新窗口中打开的,则可以使用“获取”窗口句柄来处理它,并切换到窗口方法。
driver.selectElement(By.id("I create modal window")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());
for( String window : windows)
driver.switchToWindow(window);
JavaScript警报: 如果弹出窗口是javascript类型。您可以使用切换警报方法。
Alert alert = driver.switchTo().alert();
DOM元素类型: 有时弹出窗口就像DOM元素一样,是动态创建的或隐藏到弹出窗口为止。可以使用find elemeent方法进行处理。
driver.findElement(locator).Click();
答案 3 :(得分:0)
我还没有解决我的问题,但是我发现了一些有趣的事情:当我打开一个弹出窗口时,即使我不使用Selenium打开我的网站,它也不会连接到当前会话,即使不要求Selenium打开我的网站也是如此。弹出窗口,但我自己做。如果是id:
driver.quit()
主窗口将关闭,但不会弹出