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());

selenium webdriver窗口切换(上)的更多相关文章

  1. selenium webdriver窗口切换(下)

    多窗口切换有时候需要在不同的窗口切换,从而操作不同的窗口上的元素.在selenium1.0 中这个问题比较难处理.但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口. ...

  2. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  3. Python3 Selenium多窗口切换

    Python3 Selenium多窗口切换 以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接. 在WebDriver中封装了获取当前窗 ...

  4. python3 + selenium 之窗口切换

    窗口切换 此代码来源学习后对淘宝操作实践记录: 以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在 ...

  5. Selenium 多窗口切换

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...

  6. selenium多窗口切换定位

    from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...

  7. python之selenium多窗口切换

    前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...

  8. selenium 多窗口切换(windows)

    在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...

  9. Selenium多窗口切换代码

    # #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2020/7/31 16:05 # @Author : Gengwu # @FileNam ...

随机推荐

  1. android cannot locate symbol 'sigemptyset'问题解决

    设备是android 4.1的平板电脑,支持armeabi-v7a和mips,为了能用上poco c++ lib,用cmake编译了poco mips架构的lib,但在android studio里引 ...

  2. Elasticsearch学习之深入搜索四 --- cross-fields搜索

    1. cross-fields搜索 一个唯一标识,跨了多个field.比如一个人,标识,是姓名:一个建筑,它的标识是地址.姓名可以散落在多个field中,比如first_name和last_name中 ...

  3. 部署OpenStack问题汇总(七)--解决apache启动错误"httpd:Could not reliably determine..."

    今天在调试openstack的时候,重启apache,出现以下报错: [root@hctrl log]# service httpd restart 停止 httpd:[确定] 正在启动 httpd: ...

  4. Elasticsearch修改template的mapping并迁移

    找到原始模板并修改 找到要修改的原始索引对应的模板(最好当初创建时就设计好便于修改) #例如原来索引是my_es_index_v1,那么我们创建 一个别名,使用POST 方法 curl -XPOST ...

  5. Mongoose学习参考资料

    我们学习node操作mongodb数据库时,可能经常要用到MongoDB 数据库的模型工具Mongoose,下面是我整理的一些学习资料: 番外篇之——使用 Mongoose:https://githu ...

  6. STS没有找到Dynamic Web Project

    解决:安装JavaEE插件 help-> install new software-> 选择sts对应的eclipse版本站点,如eclipse版本4.09选择2018-09.4.10选择 ...

  7. python---修改编辑器的配色和字体大小

    因为习惯黑色的背景,所以必须修改成对应的配色: 在这里设置theme: 设置字体大小: 找到Font,这里设置字体大小,首先要Scheme 后 进行 Save as 操作后,才能设置 Size ,设置 ...

  8. 源代码的管理与在eclipse中使用maven进行代码测试

    管理源代码的工具 开发历史记录 SVN :集中式的源代码管理工具 通常必须连到公司的服务器上才能正常工作 (提交代码,查看代码的历史记录 查看代码的分支) 在公司中开发项目时 每天必须至少提交(Com ...

  9. HiveQL之Database相关操作

    1.Create Database(创建数据库语法) CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_ ...

  10. Win_Server_2008 安装 Oracle_11g EM时上载EM资料失败

    此问题本人也遇到过.在网上找到了解决方案.下部分引用IT PUB. 安装oracle11g 64位.创建数据库到快结束的时候,报告说EM无法创建.emca_2010_06_13_11_05_36.lo ...