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>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值