selenium測試(Java)--多視窗切換(十三)

來源:互聯網
上載者:User

標籤:方法   switch   att   read   win   exec   equal   rate   end   

如果遇到點擊按鈕或連結後出現新視窗的情況,就需要使用視窗切換的方法。

 

本例中就是先開啟百度搜尋介面,然後利用js開啟一個百度新聞介面,然後通過selenium提供的視窗切換方法切換視窗

package com.test.windows;import java.util.Iterator;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class WindowsSwitch {    public static void main(String[] args) {        WebDriver driver = new FirefoxDriver();        driver.get("http://www.baidu.com");        driver.manage().window().maximize();        String searchHandle = driver.getWindowHandle();        System.out.println("baidu search handle : " + searchHandle);        // 擷取百度新聞的串連,然後利用js開啟一個新的視窗        waitTime(3000);        String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href");        System.out.println("the link of news is : " + href);        JavascriptExecutor executor = (JavascriptExecutor) driver;        executor.executeScript("window.open(‘" + href + "‘)");        waitTime(3000);        Set<String> handles = driver.getWindowHandles();        Iterator iterator = handles.iterator();        Iterator iterator2 = handles.iterator();        // 進入百度新聞視窗,並擷取title驗證        waitTime(3000);        while (iterator.hasNext()) {            String h = (String) iterator.next();            if (h != searchHandle) {                driver.switchTo().window(h);                if (driver.getTitle().contains("百度新聞")) {                    System.out.println("switch to news page successfully");                    break;                } else {                    continue;                }            }        }        // 返回百度首頁        waitTime(3000);        /*         * 可以直接使用searchHandle來切換,也可以利用遍曆來切換         * driver.switchTo().window(searchHandle);         * if(driver.getTitle().contains("百度一下")){         * System.out.println("switch to search page successfully");         * driver.findElement(By.cssSelector("#kw")).sendKeys(         * "switch successfully"); }         */        while (iterator2.hasNext()) {            String h = (String) iterator2.next();            if (searchHandle.equals(h)) {                driver.switchTo().window(h);                if (driver.getTitle().contains("百度一下")) {                    System.out.println("switch to search page successfully");                    driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully");                    break;                } else {                    continue;                }            }        }        waitTime(3000);        driver.quit();    }    static public void waitTime(int time) {        try {            Thread.sleep(time);        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

運行結果:

baidu search handle : {57536d1e-6817-4127-83d6-6eb138f28e51}
the link of news is : http://news.baidu.com/
switch to news page successfully
switch to search page successfully

selenium測試(Java)--多視窗切換(十三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.