我正在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);
你可以参考这个逻辑,
//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));
仔细查看您的代码,
System.out.println("current handles"+driver.getWindowHandle());
driver.close();
System.out.println("current handles"+driver.getWindowHandle());
driver.switchTo().window(parent);
似乎您正在调用switchTo()。关闭驱动程序后的窗口(父级)
驱动程序。close()此方法关闭设置焦点的浏览器窗口<这可能是您试图关闭子浏览器的问题,但它会导致错误地关闭父浏览器,或者由于某些操作,它们可能会自动关闭。仅当打开多个浏览器窗口时使用
在调用switchTo()之前不要关闭驱动程序。
我希望这对你有用,
System.out.println("current handles"+driver.getWindowHandle());
driver.switchTo().window(parent);
System.out.println("current handles"+driver.getWindowHandle());
driver.close();
基本方式,
您可以使用一个用于存储的集合keep record和迭代器对其进行迭代,
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
我正面临以下错误!!
脚本: 单击父窗口中的审核按钮 子窗口已加载 将控件切换到子窗口 单击子窗口中的“确定”按钮 窗口关闭 从父窗口继续测试 在这里,我面临的挑战是在单击“确定”按钮后切换到父窗口。当窗户关闭时。 硒网络驱动程序:2.48
我在一个场景中执行以下步骤: 打开浏览器-->导航到并单击打开新窗口的链接 使用-->在子窗口上执行操作。 关闭子窗口。 切换回父窗口。 获取当前窗口的标题。 步骤1到3工作很好。但是步骤4抛出了一个异常。为了更清楚,我在抛出异常之前包含了日志消息。n 我们正在使用一个基于flashSelenium的特殊框架,这里的开发人员已经成功地将flash Selenium与WebDriver集成在一起(最
如果单击父窗口上的链接,子窗口将打开,在子窗口中选择值后,子窗口将自动关闭,控件仍处于关闭窗口中。如何将控件带回父窗口。