我不确定getWindowHandles是否是获取弹出窗口句柄的正确方法,因为以下内容只返回父句柄而不是子句柄。
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
}
WebDriverWait waitforEle = new WebDriverWait(driver, 300);
waitforEle.until(ExpectedConditions.visibilityOfAllElementsLocatedBy
(By.xpath("//*[@id='blah']")));
如果上述方法不正确,有人能告诉我如何处理弹出窗口吗?
谢谢, 复选框。
答案 0 :(得分:0)
getWindowHandles()方法为您提供已打开的浏览器窗口或标签的ID。您只需要使用弹出窗口的定位器等待一个WebElement。
WebDriverWait wait = new WebDriverWait(driver, 300);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='blah']"));
答案 1 :(得分:0)
如果弹出窗口是警报,请使用:
Alert alert =driver.switchTo().alert(); alert.accept();
或者如果是应用程序弹出窗口,则使用:
String parentWinHandle = driver.getWindowHandle();
//Click the button or link which populates the window
driver.findElement(By.id(actionBtn)).click();
Thread.sleep(5000);
Set<?> popupHandles = driver.getWindowHandles();
//SOP *popupHandles*
Iterator<?> iterator = popupHandles.iterator();
while(iterator.hasNext())
{
String popupHandle = iterator.next().toString();
if(!popupHandle.contains(parentWinHandle)) {
driver.switchTo().window(popupHandle);
Thread.sleep(3000);
//Perform the operation you want to do
driver.switchTo().window(parentWinHandle);
}
}