selenium测试(Java)--关闭窗口(二十)
quit方法:退出相关的驱动程序和关闭所有窗口
close方法:关闭当前窗口
package com.test.closewindow; import java.util.Iterator;
import java.util.Set; import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class WindowsClose { public static void main(String[] args) { WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
driver.manage().window().maximize(); String searchHandle = driver.getWindowHandle();
String newsHandle = null;
System.out.println("baidu search handle : " + searchHandle); // 获取百度新闻的连接,然后利用js打开一个新的窗口
waitTime(3000);
String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href");
System.out.println("the link of news is : " + href);
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("window.open('" + href + "')"); waitTime(3000);
Set<String> handles = driver.getWindowHandles();
Iterator iterator = handles.iterator();
Iterator iterator2 = handles.iterator(); // 进入百度新闻窗口,并获取title验证
waitTime(3000);
while (iterator.hasNext()) {
String h = (String) iterator.next();
if (h != searchHandle) {
driver.switchTo().window(h);
if (driver.getTitle().contains("百度新闻")) {
System.out.println("switch to news page successfully");
newsHandle = driver.getWindowHandle();
break;
} else {
continue;
}
} } // 返回百度首页
waitTime(3000);
/*
* 可以直接使用searchHandle来切换,也可以利用遍历来切换
* driver.switchTo().window(searchHandle);
* if(driver.getTitle().contains("百度一下")){
* System.out.println("switch to search page successfully");
* driver.findElement(By.cssSelector("#kw")).sendKeys(
* "switch successfully"); }
*/
while (iterator2.hasNext()) {
String h = (String) iterator2.next();
if (searchHandle.equals(h)) {
driver.switchTo().window(h);
if (driver.getTitle().contains("百度一下")) {
System.out.println("switch to search page successfully");
driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully");
driver.close();// 只关闭百度首页
System.out.println("close search page successfully");
driver.switchTo().window(newsHandle);// 切换到百度新闻
System.out.println("当前的title是: " + driver.getTitle());// 获取title
waitTime(3000);
break;
} else {
continue;
}
} } waitTime(3000);
driver.quit(); } static public void waitTime(int time) { try {
Thread.sleep(time);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
执行结果:
baidu search handle : {75749f9a-f6b7-4fe6-80ae-dd9e053dd577}
the link of news is : http://news.baidu.com/
switch to news page successfully
switch to search page successfully
close search page successfully
当前的title是: 百度新闻搜索——全球最大的中文新闻平台
selenium测试(Java)--关闭窗口(二十)的更多相关文章
- Java IO(二十) PrintStream 和 DataOutputStream 异同
Java IO(二十) PrintStream 和 DataOutputStream 异同 一.相同点 都是继承与FileOutputStream,用于包装其它输出流. 二.不同点 (一).Print ...
- Java开发学习(二十五)----使用PostMan完成不同类型参数传递
一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...
- Java开发学习(二十六)----SpringMVC返回响应结果
SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...
- Java开发学习(二十八)----拦截器(Interceptor)详细解析
一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...
- Java并发(二十二):定时任务ScheduledThreadPoolExecutor
需要在理解线程池原理的基础上学习定时任务:Java并发(二十一):线程池实现原理 一.先做总结 通过一个简单示例总结: public static void main(String[] args) { ...
- Java开发学习(二十二)----Spring事务属性、事务传播行为
一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...
- Java开发学习(二十四)----SpringMVC设置请求映射路径
一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...
- Java并发(二十):线程本地变量ThreadLocal
ThreadLocal是一个本地线程副本变量工具类. 主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不同的 ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- Java从零开始学二十九(大数操作(BigIntger、BigDecimal)
一.BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作. 不可变的任意精度的整数.所有操作中 ...
随机推荐
- 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
非常简单可以解决: 方法一,用editplus打开,再复制回VS 方法二:在VS中,点文件->高级保存选项,然后在行尾选项中选择windows(CR LF),重新编译,ok
- 将mysql非分区表转换为分区表(转)
查看表的分布状况mysql> select count(*) from justin;+----------+| count(*) |+----------+| 5845246 |+---- ...
- [na]小区网络-pppoe拨号认证原理及部署(panabit来管理)
以前搞网络时候,对小区宽带adsl上网(后ie中的pppoe拨号config)+对一坨人限速的系统(panabit)比较感兴趣,挺神秘. 以前写的,有些纰漏,抽时间我会陆陆续续补充下. PPPOE认证 ...
- 玩转oracle学习第七天
1.上节回想 2.PL/SQL的进阶 3.oracle的视图 4.oracle的触发器 目标: 1.掌握PL/SQL的高级使用方法(能编写分页过程模块,下订单过程模块.. . ) 2.会处理or ...
- Ubuntu 12.04下jdk的安装与配置
由于要开始在linux下学习jsp的开发,所以就准备自己动手配置一下jdk和tomcat jdk 下载地址: http://www.oracle.com/technetwork/java/javase ...
- GetLastError()返回值大全
[0]-操作成功完成.[1]-功能错误.[2]-系统找不到指定的文件.[3]-系统找不到指定的路径.[4]-系统无法打开文件.[5]-拒绝访问.[6]-句柄无效.[7]-存储控制块被损坏.[8]-存储 ...
- python2 除法保留两位小数
- Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...
- Qt学习之路2---窗口组件及窗口类型
窗口组件: 图形用户界面由不同的窗口和窗口组件构成: Qt以组件对象的方式,构建图形用户界面. 组件的类型包括: ---容器类(父组件):用于包含其他的界面组件 ---功能类(子组件):用于实现特定的 ...
- centos7添加服务
[Unit] Description=rockae Service After=network.target [Service] ExecStart=/bin/java -jar /usr/local ...