您的位置:首页 > 编程语言 > Java开发

selenium2java 遇到有三个窗口用例的处理办法

2017-03-20 18:57 204 查看
本人在学习selenium2java的时候遇到一个用例,执行完竟然有三个窗口,使用handles的办法教程只写了两个窗口的解决办法,后来我把handles全都输出出来后发现其实相当于三个窗口,再进去第三个窗口的时候,多判断一下就好了,斜面分享一下自己的经验。

//登录下载精品资源
public static void downloadResources(WebDriver driver, boolean key) throws InterruptedException, AWTException {
if (key) {
loginWithTeacher(driver);
}else{
loginWithStudent(driver);
}
findElementByTextAndClick(driver, "精品资源");
String homehandle = driver.getWindowHandle();
findElementByXpathAndClick(driver, "html/body/div[3]/ul/li[4]/a");
Set<String> handles = driver.getWindowHandles();
for(String handle : handles){
if (handle.equals(homehandle)==false){
driver.switchTo().window(handle);
output("切换到精品资源页面了!");
Thread.sleep(2000);
findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[1]/dl/dd/a[4]");
findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[2]/dl/dd/a[3]");
findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[4]/dl/dd/a[3]");
Thread.sleep(2000);
String news = driver.getWindowHandle();
findElementByTextAndClick(driver, "点击下载");
Set<String> handlenews = driver.getWindowHandles();
for(String newsss : handlenews){
if(newsss.equals(news)==false && newsss.equals(homehandle) == false) {
driver.switchTo().window(newsss);
output("切换到资源页面了!");
findElementByXpathAndClick(driver, "html/body/div[3]/div[1]/div[2]/table/tbody/tr[3]/td[5]/a");
Thread.sleep(500);
driver.switchTo().alert().accept();
driver.close();
}
}
for(String newsss : handlenews){
if (newsss.equals(news)) {
driver.switchTo().window(newsss);
output("回到精品资源页面了!");
driver.close();
}
}
}
}
for(String handle : handles){
if (handle.equals(homehandle)){
driver.switchTo().window(handle);
output("回到首页了!");
Thread.sleep(2000);
driver.quit();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息