您的位置:首页 > 其它

webdriver切换窗口

2013-08-22 11:39 302 查看
1. 方案一:

当测试页面同时出现2个或者以上窗口时候,而且新打开的window没有namem,可以使用driver.switchTo().window(winHandleID)来进行切换,如下代码已经在IE8中测试通过:

Java代码



//Store the current window handle

String winHandleBefore = driver.getWindowHandle();



//Switch to new window opened

for(String winHandle : driver.getWindowHandles()){

System.out.println("+++" + winHandle);

driver.switchTo().window(winHandle);

}

// Close the original window

driver.switchTo().window(winHandleBefore);

driver.close();



//Switch to new window opened

for(String winHandle : driver.getWindowHandles()){

System.out.println("+++" + winHandle);

driver.switchTo().window(winHandle);

}



当最后只有一个窗口剩下的时候,应该可以直接使用

driver.switchTo().window(driver.getWindowHandle)

去选中新的窗口
2. 方案二:

在webdriver官方的api中,切换窗口的方法提供的参数是nameOrHandle。

引用
WebDriver window(java.lang.String nameOrHandle)

Switch the focus of future commands for this driver to the window with the given name/handle.

但是在实际运用中,更多的可能是需要根据新窗口的title去切换窗口。因此封装了如下方法:

Java代码


public boolean switchToWindow(WebDriver driver,String windowTitle){
boolean flag = false;
try {
String currentHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
for (String s : handles) {
if (s.equals(currentHandle))
continue;
else {
driver.switchTo().window(s);
if (driver.getTitle().contains(windowTitle)) {
flag = true;
System.out.println("Switch to window: "
+ windowTitle + " successfully!");
break;
} else
continue;
}
}
} catch (NoSuchWindowException e) {
System.out.println("Window: " + windowTitle
+ " cound not found!", e.fillInStackTrace());
flag = false;
}
return flag;
}

首先获取当前driver驱动的所有窗口的handle然后进行比对筛选,如果窗口的title符合预期,则切换,并返回true,反之则返回false。

3. 方案三:

public static WebDriver switchWindows(WebDriver dr) {

WebDriver window;

String currentWindow = dr.getWindowHandle();

Set<String> handles = dr.getWindowHandles();

Iterator<String> it = handles.iterator();

while (it.hasNext()) {

if (currentWindow == it.next())

continue;

window = dr.switchTo().window(it.next());

// dr.manage().window().maximize();

return window;

}

return null;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: