1. 程式人生 > >Selenium中怎麽實現多個窗口之間的切換?

Selenium中怎麽實現多個窗口之間的切換?

Selenium切換窗口 Selenium利用句柄切換窗口 Selenium窗口之間的切換 Selenium怎麽操作其他的窗口

Selenium 多窗口(多Tab)之前的切換

多窗口的切換的目的是為了讓selenium改變操作的窗口。在selenium中假如不切換窗口,一旦遇到一個鏈接跳轉到另外的窗口的時候,當前的資源句柄操作的依然是最開始的窗口,這樣一來,就給自動化人員帶來極大的不便。在多窗口的切換中,資源句柄會隨著切換窗口而切換操作的資源句柄。
在切換窗口的時候需要做的步驟與思路:獲取當前瀏覽器的所有資源句柄放到Set集合中,通過遍歷的方式獲取該資源句柄的Title與實際想切換的窗口的Title進行比較,如果相等,那麽在當前窗口停下。否則不斷遍歷。

import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class alterWind {

public static void main(String[] args) {
        // TODO Auto-generated method stub
    String chromePath=System.getProperty("user.dir")
            +"\\driver\\chromedriver.exe";
    System.setProperty("webdriver.chrome.driver", chromePath);
    WebDriver driver=new ChromeDriver();
        /*
         * 生成三個京東的窗口
         */
driver.get("https://www.jd.com");
    driver.findElement(By.linkText("秒殺")).click();
    driver.findElement(By.linkText("優惠券")).click();
    Set<String> handles=driver.getWindowHandles();
        /*
         * 遍歷handles,Set集合
         */ 
for(String wind:handles){   
        /*
                 * 根據集合中的資源句柄不斷遍歷各個窗口並獲取各個窗口的Title是否包含"京東秒殺-正品保證、天天低價、限時限量")
                 * 包含的話就break退出循環,否則直至遍歷完集合
                 */
if(driver.switchTo().window(wind).getTitle().contains("京東秒殺-正品保證、天天低價、限時限量")){
            break;
        }
    }
}
}

Selenium中怎麽實現多個窗口之間的切換?