selenium webdriver窗口切换(下)
2017-02-09 22:33
423 查看
多窗口切换
有时候需要在不同的窗口切换,从而操作不同的窗口上的元素。在selenium1.0 中这个问题比较难处理。
但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口。
这里以百度首页与注册页为例,演示在不同窗口切换。
整个脚本的处理过程:首先打开百度首页,通过getWindowHandle()获得当前窗口的句柄,并给变
量sreach_handle。接着打开登录弹窗,在登录窗口上点击“立即注册”从而打开新的注册窗口。通过
getWindowHandles()获得当前打开的所窗口的句柄,赋值给变量handles。
第一个循环遍历handles,如果handle 不等于sreach_handle,那么一定是注册窗口,因为脚本执行只
打开的两个窗口。所以,通过switchTo().window()切换到注册页进行注册操作。第二个循环类似,不
过这一次判断如果handle 等于sreach_handle,那么切换到百度搜索页,关闭之前打开的登录弹窗,然后时
行搜索操作。
在本例中所有用到的新方法:
getWindowHandle() 获得当前窗口句柄
getWindowHandles() 返回的所有窗口的句柄到当前会话
switchTo().window() 用于切换到相应的窗口,与上一节的switchTo().frame()是类似,前者
用于不同窗口的切换,后者用于不同表单之间的切换。
有时候需要在不同的窗口切换,从而操作不同的窗口上的元素。在selenium1.0 中这个问题比较难处理。
但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口。
这里以百度首页与注册页为例,演示在不同窗口切换。
package com.mypro.jase; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class windows { public static void main(String[] arge) throws InterruptedException{ WebDriver driver = new ChromeDriver(); driver.get("http://www.baidu.com"); //获得当前窗口句柄 String sreach_handle = driver.getWindowHandle(); //打开百度注册窗口 System.out.println(sreach_handle); driver.findElement(By.linkText("登录")).click(); Thread.sleep(3000); driver.findElement(By.linkText("立即注册")).click(); //获得所有窗口句柄 Set<String> handles = driver.getWindowHandles(); //判断是否为注册窗口,并操作注册窗口上的元素 for(String handle : handles){ if (handle.equals(sreach_handle)==false){ //切换到注册页面 driver.switchTo().window(handle); System.out.println("now register window!"); Thread.sleep(2000); driver.findElement(By.name("account")).clear(); driver.findElement(By.name("account")).sendKeys("username"); driver.findElement(By.name("password")).sendKeys("password"); Thread.sleep(2000); //...... //关闭当前窗口 driver.close(); } } //判断是否为百度首页,并操作首页上的元素 for(String handle : handles){ if (handle.equals(sreach_handle)){ //切换到注册页面 driver.switchTo().window(handle); Thread.sleep(2000); driver.findElement(By.className("close-btn")).click(); System.out.println("now baidu sreach page!"); driver.findElement(By.id("kw")).sendKeys("webdriver"); driver.findElement(By.id("su")).click(); Thread.sleep(2000); } } driver.quit(); } }
整个脚本的处理过程:首先打开百度首页,通过getWindowHandle()获得当前窗口的句柄,并给变
量sreach_handle。接着打开登录弹窗,在登录窗口上点击“立即注册”从而打开新的注册窗口。通过
getWindowHandles()获得当前打开的所窗口的句柄,赋值给变量handles。
第一个循环遍历handles,如果handle 不等于sreach_handle,那么一定是注册窗口,因为脚本执行只
打开的两个窗口。所以,通过switchTo().window()切换到注册页进行注册操作。第二个循环类似,不
过这一次判断如果handle 等于sreach_handle,那么切换到百度搜索页,关闭之前打开的登录弹窗,然后时
行搜索操作。
在本例中所有用到的新方法:
getWindowHandle() 获得当前窗口句柄
getWindowHandles() 返回的所有窗口的句柄到当前会话
switchTo().window() 用于切换到相应的窗口,与上一节的switchTo().frame()是类似,前者
用于不同窗口的切换,后者用于不同表单之间的切换。
相关文章推荐
- WebDriver(Selenium2) 根据新窗口title切换窗口
- selenium webdriver窗口切换(上)
- 关于selenium2(webdriver)自动化测试过程中标签页面或者窗口切换的处理解决方案
- 20171017学习笔记Selenium 2 第四章WebDriver API 4.8定位一组元素4.9多表单切换4.10多窗口切换
- Selenium_WebDriver登录模拟鼠标移动切换窗口等操作练习(cssSelector初练手)_Java
- selenium WebDriver之切换到链接打开的新浏览器窗口
- selenium webdriver——多表单切换与多窗口切换
- WebDriver切换浏览器窗口
- Selenium里WebDriver中窗口的close()与quit()
- Webdriver-Frame嵌套页面元素定位 & 多窗口切换 & 警告弹窗处理
- java selenium webdriver处理JS操作窗口滚动条
- Web Driver 自动化测试-窗口间的切换
- selenium webdriver学习(六)------------如何得到弹出窗口
- webdriver 多窗口切换
- WebDriver切换浏览器窗口
- webdriver实现简单的窗口切换
- webdriver实现窗口切换
- Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换
- Selenium 疑问之一:WebDriver 获得弹出窗口(转)
- Selenium_WebDriver登录模拟鼠标移动切换窗体等操作练习(cssSelector初练手)_Java