您的位置:首页 > 其它

WebDriver如何切换到新打开的窗口中

2014-06-16 11:06 567 查看
在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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: