6.5 Selenium操作弹出窗口

    技术2022-07-10  146

    1.原理 在代码里,通过Set allWindowsId = driver.getWindowHandles();来获取所有弹出浏览器的句柄,然后遍历,使用swithcto.window(newwindow_handle)方法定位到新的窗口。

    2.案例 程序6-16演示效果:首先打开博客首页,停留2秒后输出标题名称。然后点击创作中心按钮跳转到创作中心页面,由于未进行登录,因此跳转后的页面会是登录页,通过遍历句柄获取新窗口并输出标题名称,最后再回到父窗口并输出标题名称。

    //程序6-16 public class MultipleWindows { public static void main(String[] args) throws InterruptedException { WebDriver driver = WebDriverUtils.getWebDriver(); String url = "https://www.csdn.net"; driver.get(url); Thread.sleep(2000); //获取当前窗口的句柄 String parentWindowId = driver.getWindowHandle(); System.out.println("parentWindow title:" + driver.getTitle()); //点击创作中心 WebElement blogClick = driver.findElement(By.xpath("//*[@id=\"blogClick\"]")); blogClick.click(); Set<String> allWindowsId = driver.getWindowHandles(); //获取所有的打开窗口的句柄,遍历获取打开的新窗口并输出标题 for (String windowId : allWindowsId) { if (driver.switchTo().window(windowId).getTitle().contains("博客")) { driver.switchTo().window(windowId); //操作新窗口 //todo System.out.println("childWindow title:" + driver.getTitle()); //关闭当前窗口 driver.close(); break; } } //再次切换回原来的父窗口 driver.switchTo().window(parentWindowId); System.out.println("parentWindow title:" + driver.getTitle()); driver.quit(); } }
    Processed: 0.009, SQL: 9