selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面,

当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作:

package test20161206;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions; public class chuangkouqiehuan20161206 { public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "C:\\Training\\Automation\\Software\\drivers\\chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.hao123.com/");
Thread.sleep(5000); driver.findElement(By.xpath("//*[@id='box-famoussite']/div/div[2]/span[2]/a")).click();
Thread.sleep(5000);
System.out.println("进入58同城"); // String[] handles=new String[driver.getWindowHandles().size()];
// driver.getWindowHandles().toArray(handles);
// driver.switchTo().window(handles[1]);
for (String handle:driver.getWindowHandles())
{
driver.switchTo().window(handle);
}
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id='nav']/li[7]/a")).click();
Thread.sleep(5000);
System.out.println("进入安居客"); // String[] handles1=new String[driver.getWindowHandles().size()];
// driver.getWindowHandles().toArray(handles1);
// driver.switchTo().window(handles1[2]);
for (String handle:driver.getWindowHandles())
{
driver.switchTo().window(handle);
}
driver.findElement(By.xpath("//*[@id='header']/div[3]/div[2]/a[1]")).click();
Thread.sleep(5000);
System.out.println("进入我要推广");
for (String handle:driver.getWindowHandles())
{
driver.switchTo().window(handle);
}
driver.findElement(By.xpath("//*[@id='footer']/ul[1]/li[11]/a")).click();
Thread.sleep(5000);
System.out.println("进入房贷计算器"); String[] handles=new String[driver.getWindowHandles().size()];
driver.getWindowHandles().toArray(handles);
driver.switchTo().window(handles[2]); Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id='search-esf']")).sendKeys("上海浦东新区张江高科");
System.out.println("回到第三个窗口进行操作");
Thread.sleep(2000); Actions action=new Actions(driver);
// action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).perform();
WebElement element=driver.findElement(By.xpath("//*[@id='search-esf']"));
action.click(element).keyDown(Keys.CONTROL).sendKeys("a").keyUp(Keys.CONTROL).perform();
action.keyDown(Keys.CONTROL).sendKeys("c").keyUp(Keys.CONTROL).perform();
action.click(element).keyDown(Keys.CONTROL).sendKeys("v").keyUp(Keys.CONTROL).perform();
System.out.println("在输入框里Ctrl a,Ctrl c,Ctrl v"); }
}

下面是却换到单个页面的前后页面,即:页面的前进和后退

driver.navigate().back();
点击当前页面后退按钮
driver.navigate().forward();
点击当前页面的前进按钮
driver.navigate().refresh();
点击当前页面的刷新按钮

除外---------------------------------------------------------------------------------------------------

多窗体的情况使用driver.switchTo().window()
这是一个Sample:
Set<String> handles = driver.getWindowHandles();
handles.remove(driver.getWindowHandle());//去掉当前句柄
driver.switchTo().window(handles.iterator().next());

最新文章

  1. 算法与数据结构(十五) 归并排序(Swift 3.0版)
  2. 修改UISearchBar的背景颜色
  3. 在Spring下集成ActiveMQ
  4. .net(C#)访问Oracle数据库的几种免安装组件的对比
  5. 022医疗项目-模块二:药品目录的导入导出-对XSSF导出excel类进行封装
  6. faker image
  7. Ajax方法执行跳转或者加载操作系统报出这样错误Sys.WebForms.PageRequestManagerParserErrorException:如何让解决
  8. 使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
  9. C++之sort函数
  10. 浅谈JAVA验证码~
  11. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
  12. java设计师初入职场,如何站稳脚跟
  13. Krajee插件的用法
  14. python 判断网络通断同时检测网络的状态
  15. C++标准库之右值引用相关:引用折叠
  16. python面向对象编程 -- 基本概念
  17. 【bzoj 1901】Zju2112 Dynamic Rankings
  18. docker使用技巧小记
  19. Flutter常用组件(Widget)解析-Container
  20. 剑指offer面试题7:用两个栈实现队列

热门文章

  1. MS - 2 - 设计包含 min 函数的栈
  2. [转] SSH原理与运用(2):远程操作与端口转发
  3. Mysql之高可用
  4. input内强制保留小数点后两位 位数不足时自动补0
  5. UVA 562 Dividing coins --01背包的变形
  6. [LED]如何配置LCD背光和LED,调试方法
  7. Demo学习: ClientInfo
  8. MEF技术
  9. python import
  10. Error In Work
  11. JavaScript中对数组的操作
  12. POJ 2350 Above Average
  13. 错误:You can&#39;t specify target table &#39;xxx&#39; for update in FROM clause的解决
  14. UML之状态图
  15. Xor Sum 01字典树 hdu4825
  16. ArcGIS API for JavaScript 4.x 本地部署之Apache(含Apache官方下载方法)
  17. 获取Android设备唯一标识码
  18. webpack热更新和常见错误处理
  19. Caffe中deploy.prototxt 和 train_val.prototxt 区别
  20. 浅谈iOS中MVVM的架构设计