天天看點

6.5 Selenium操作彈出視窗

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 =
        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("CSDN部落格")) {
                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();
    }
}