Webdriver无法控制弹出窗口

时间:2013-12-11 11:28:52

标签: java popup selenium-webdriver popupwindow

使用findElement发送click后,我不能继续处理弹出窗口的下一个操作,直到弹出窗口关闭(手动),因为当前窗口不受控制,因此webdriver永远等待。

我正在尝试执行以下操作:

driver.findElement(By.xpath(salesforceButtons.CUSTOM_OBJECT_DELETE.getValue())).click();
Set<String> windowId = driver.getWindowHandles();    // get  window id of current window
Iterator<String> itererator = windowId.iterator();   
String mainWinID = itererator.next()
String  newAdwinID = itererator.next();
driver.switchTo().window(newAdwinID);

但点击后它会卡住。

1 个答案:

答案 0 :(得分:0)

我认为你需要使用以下内容(假设弹出窗口是指浏览器警报窗口):

Alert alert = driver.switchTo().alert();
alert.accept()

我可能错了,可能你需要遍历窗口,但是,你所说的代码没有这样做,它只是将窗口焦点改为定义的窗口。 driver.getWindowHandles()设置中的第二个结果。如果它不仅仅是一个简单的警报,我可以建议以下内容:

String startWinId = driver.getWindowHandle(); // caches the current window id    
driver.findElement(By.xpath(salesforceButtons.CUSTOM_OBJECT_DELETE.getValue())).click();
Set<String> windowId = driver.getWindowHandles(); // actually gets all available windows ids
Iterator<String> iterator = windowId.iterator();

// Iterates through each active window and does stuff within that window.
while (iterator.hasNext()) {
    driver.switchTo().window(iterator.next());
    <insert code to run against each window here>
}   

// Switches back to the original window to carry on with executing tests
driver.switchTo().window(startWinId);