“这一次,我上紧了发条,准备走很远的路。”

div弹出登录框及新窗体定位操作

上一篇 / 下一篇  2015-09-11 10:16:17 / 天气: 阴雨 / 心情: 平静

好久都没写东西了,来记录自己的学习过程。
1、下面是利用java+webdriver的方法实现百度登录的过程,进入百度网页,点击右上角的“登录”按钮,页面弹出登录的小窗体,输入用户名和密码,点击登陆的过程。
利用firebug查看到弹出的登录小窗体非另一个窗口,而是div标签下的信息。一直在网上查找各种资料,查找到的都是利用句柄定位弹出窗口的,折腾了一天的时间才搞明白。
package com.selenium.Glen;//我的包名
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public classtest{//类名

public static void main(String[] args) {
System.setProperty("webdriver.firefox.bin", "D:/Firefox/firefox.exe"); 
WebDriver driver=new FirefoxDriver();
    driver.get("http://www.baidu.com/");
    driver.findElement(By.linkText("登录")).click();
    driver.findElement(By.id("TANGRAM__PSP_8__userName")).sendKeys("自己的用户名");
    driver.findElement(By.id("TANGRAM__PSP_8__password")).sendKeys("自己的密码");
    driver.findElement(By.id("TANGRAM__PSP_8__submit")).click();
}
}
2、从一个页面点击某一链接进入另一个窗体,并对新打开的窗体元素进行操作,需要先获取新窗体的句柄。

使用windowhandle方法来获取当前浏览器窗口的句柄,使用了windowhandles方法获取所有弹出的浏览器窗口的句柄,然后通过排除当前句柄的方法来得到新开窗口的句柄。

在获取新弹出窗口的句柄后,使用switchto.window(newwindow_handle)方法,将新窗口的句柄作为参数传入既可捕获到新窗口了。

如果想回到以前的窗口定位元素,那么再调用1次switch_to.window方法,传入之前窗口的句柄既可达到目的。

String url ="http://www.51testing.com/";
dr.get(url);
dr.findElement(By.linkText("关于我们")).click();
//得到当前窗口的句柄
String currentWindow = dr.getWindowHandle();
//得到所有窗口的句柄
Set<String> handles = dr.getWindowHandles();
Iterator<String> it = handles.iterator();
while(it.hasNext()){
String handle = it.next();
if(currentWindow.equals(handle)) continue;
WebDriver window = dr.switchTo().window(handle);
System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl());
window.findElement(By.id("searchkey")).sendKeys("APP");
window.findElement(By.name("subjectsearch")).click();
}
}
}


TAG:

 

评分:0

我来说两句

Open Toolbar