我有一种情况,点击链接网页打开一个弹出窗口.弹出窗口打开后,焦点位于弹出窗口中,并禁用主窗口.我无法将控件转移到弹出窗口.
请查看以下代码.
请查看以下代码.
driver.findElement(By.linkText("Click me")).click();// when this line of code is reached then a popup window opens. System.out.println("After Clicking me"); // After the popup window opens this line of code is never executed.
我无法将控件从父窗口传输到弹出窗口.我知道以下命令.
driver.switchTo().window("popup window");
但它没有多大帮助.请帮我.
解决方法
这是我需要使用以下弹出窗口时关闭它然后返回主窗口的代码.当然,为了这个答案的目的,它已被简化.它保持原始窗口(主要)的句柄,因此它可以在其他窗口之间产生差异.
它需要一个显式的WebDriverWait,因为我在开发期间确实遇到了代码在窗口实际打开之前运行的问题,所以这可能不是一个理想的条件,
function manipulatePopUp(final WebDriver driver,final WebDriverWait wait) { final String mainWindowHandle = driver.getWindowHandle(); driver.findElement(By.id("linkThatOpensPopUp")).click(); wait.until(new ExpectedConditions<Boolean>() { @Override public Boolean apply(WebDriver d) { return (d.getWindowHandles().size() != 1); } }); for (String activeHandle : driver.getWindowHandles()) { if (!activeHandle.equals(mainWindowHandle)) { driver.switchTo().window(activeHandle); } } driver.close(); driver.switchTo().window(mainWindowHandle); }