我正在IE上进行测试。单击后,我切换到子窗口,但无法返回父窗口,并显示错误消息“窗口已关闭”。
String parent= driver.getWindowHandle(); //after clicking new window pop up
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//a[@href='javascript:submitExport()'])[5]"))).click();
System.out.println("parent"+parent);
for (String child : driver.getWindowHandles()) {
System.out.println("child"+child);
if(!parent.equalsIgnoreCase(child))
{
driver.switchTo().window(child);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(.,'Export')]")));
WebElement ele=driver.findElement(By.xpath("//a[contains(.,'Export')]"));
ele.click();
}
}
System.out.println("current handles"+driver.getWindowHandle());
driver.close();
System.out.println("current handles"+driver.getWindowHandle());
driver.switchTo().window(parent);
答案 0 :(得分:0)
请仔细看一下代码,
System.out.println("current handles"+driver.getWindowHandle());
driver.close();
System.out.println("current handles"+driver.getWindowHandle());
driver.switchTo().window(parent);
关闭驱动程序后,您似乎正在调用switchTo()。window(parent)。
driver.close()此方法关闭设置焦点的浏览器窗口。
这可能是您试图关闭子浏览器的问题,但是它错误地导致关闭父浏览器,或者由于某些操作,它们可能会自动关闭。
仅在打开多个浏览器窗口时使用。
在调用switchTo()之前不要关闭驱动程序。
我希望这可能对您有用,
System.out.println("current handles"+driver.getWindowHandle());
driver.switchTo().window(parent);
System.out.println("current handles"+driver.getWindowHandle());
driver.close();
基本方式,
您可以使用一组存储保持记录和迭代器来对其进行迭代,
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//a[@href='javascript:submitExport()'])[5]"))).click()
Set <String> handles =driver.getWindowHandles(); // take all window info
Iterator<String> it = handles.iterator();
String parent = it.next(); // store
String child = it.next(); // store
driver.switchTo().window(child); // switching
driver.close(); // close child window
driver.switchTo().window(parent); // switching
driver.quit(); // close
答案 1 :(得分:-1)
您可以参考此逻辑,
//It will open new tab using Javascript
((JavascriptExecutor) driver).executeScript("window.open()");
//Manage to switch driver on newly opened tab
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(tabs.size() - 1));
//Manage to switch driver on existing old tab
driver.close();
driver.switchTo().window(tabs.get(tabs.size() - 2));