【转载】WebDriver如何切换到新打开的窗口中

在WebDriver中经常会遇到点击某个元素后打开一个新的窗口,而下一步的操作要在新窗口中进行。

那么如何切换到新窗口中呢,方式可能有多种,这里只记录一下我的操作方式。

===========================================================================

<span style="font-family:Courier New;font-size:12px;">package com.test;  

  
import java.util.ArrayList;  
import java.util.Set;  
  
import org.openqa.selenium.By;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.chrome.ChromeDriver;  
import org.openqa.selenium.support.ui.ExpectedCondition;  
import org.openqa.selenium.support.ui.WebDriverWait;  
import org.testng.annotations.AfterTest;  
import org.testng.annotations.BeforeTest;  
import org.testng.annotations.Test;  
  
public class SwithWindow {  
    WebDriver driver = null;  
    ArrayList<String> list = new ArrayList<String>();  
      
    @BeforeTest  
    public void beforeTest() {  
        System.setProperty("webdriver.chrome.driver",  
                "./lib/driver/chromedriver.exe");  
        driver = new ChromeDriver();  
    }  
  
    @Test  
    public void test3() throws InterruptedException {  
        driver.get("file:///D:/demo.html");  
        String oriWin = driver.getWindowHandle();  
        System.out.println("原始窗口为:"+oriWin);  
        list.add(oriWin);  
        driver.findElement(By.xpath("//div[@id='open']/a")).click();  
        Thread.sleep(1000);  
        Set<String> handles = driver.getWindowHandles();  
        for(String handle : handles) {  
            if(list.indexOf(handle) == -1) {  
                WebDriverWait wait = new WebDriverWait(driver, 3);  
                wait.until(new ExceptWindow(handle));  
                System.out.println(handle);  
                list.add(handle);  
            }  
        }  
        System.out.println("已经切换到了"+ driver.getWindowHandle());  
    }  
      
    @AfterTest(alwaysRun = true)  
    public void afterTest() {  
        driver.quit();  
    }  
      
    static class ExceptWindow implements ExpectedCondition<WebDriver> {  
        private String id;  
        public ExceptWindow(String id) {  
            this.id = id;  
        }  
  
        @Override  
        public WebDriver apply(WebDriver d) {  
            return d.switchTo().window(id);  
        }  
    }  
}  
  
</span>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值