WebDriverAPI(10)
操作Frame页面元素
测试网址代码
frameset.html:
<html>
<head>
<title>frameset页面</title>
</head>
<frameset cols="25%,50%,25%">
<frame id="leftframe" src="frame_left.html">
<frame id="middleframe" src="frame_middle.html">
<frame id="rightframe" src="frame_right.html">
</frameset>
</html>
frame_left.html:
<html>
<head>
<title>左侧frame</title>
</head>
<body>
<p>这是左侧frame页面上的文字</p>
</body>
</html>
frame_middle.html:
<html>
<head>
<title>中间frame</title>
</head>
<body>
<p>这是中间frame页面上的文字</p>
</body>
</html>
frame_right.html:
<html>
<head>
<title>右侧frame</title>
</head>
<body>
<p>这是右侧frame页面上的文字</p>
</body>
</html>
Java语言版本API实例
@Test
public void testHandleFrame() {
driver.manage().window().maximize();
driver.get(url);
//找到左边的frame
driver.switchTo().frame("leftframe");
WebElement leftFrameText = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是左侧frame页面上的文字", leftFrameText.getText());
//返回frameset上,不返回则无法进入其他frame
driver.switchTo().defaultContent();
driver.switchTo().frame("middleframe");
WebElement middleFrameText = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是中间frame页面上的文字", middleFrameText.getText());
driver.switchTo().defaultContent();
driver.switchTo().frame("rightframe");
WebElement rightFrameText = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是右侧frame页面上的文字", rightFrameText.getText());
driver.switchTo().defaultContent();
//可通过frame()里面填写数字进行跳转从0开始 1代表第二个frame
driver.switchTo().frame(1);
middleFrameText = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是中间frame页面上的文字", middleFrameText.getText());
}
使用Frame中的HTML源码内容来操作Frame
测试网址代码
同上一个html代码
Java语言版本API实例
@Test
public void testHandleFrameByPageSource() {
driver.manage().window().maximize();
driver.get(url);
//找到页面的所有frame对象,并存储到frames容器中
List<WebElement>frames = driver.findElements(By.tagName("frame"));
//遍历所有包含frame的页面
for(WebElement frame:frames){
//进入frame页面
driver.switchTo().frame(frame);
//判断是否包含中间frame
if(driver.getPageSource().contains("中间frame")){
WebElement middleFrameText = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是中间frame页面上的文字", middleFrameText.getText());
break;
}else{
driver.switchTo().defaultContent();
}
}
driver.switchTo().defaultContent();
}
操作iframe的页面元素
测试网址代码
修改frame_left.html:
<html>
<head>
<title>左侧frame</title>
</head>
<body>
<p>这是左侧frame页面上的文字</p>
<iframe src='iframe.html' style="width:200px";height:50px></iframe>
</body>
</html>
在同目录下增加iframe.html
<html>
<head>
<title>iframe</title>
</head>
<body>
<p>这是iframe页面上的文字</p>
</body>
</html>
Java语言版本API实例
@Test
public void testHandleIFrame() {
driver.manage().window().maximize();
driver.get(url);
//进入左边的frame
driver.switchTo().frame("leftframe");
//找到包含iframe的页面元素
WebElement iframe = driver.findElement(By.tagName("iframe"));
//进入iframe
driver.switchTo().frame(iframe);
WebElement p = driver.findElement(By.xpath("//p"));
Assert.assertEquals("这是iframe页面上的文字", p.getText());
driver.switchTo().defaultContent();
driver.switchTo().frame("middleframe");
}
操作浏览器的cookie
测试网址
http://www.sogou.com
Java语言版本API实例
@Test
public void f() {
driver.manage().window().maximize();
driver.get(url);
Set<Cookie>cookies = driver.manage().getCookies();
Cookie newCookie = new Cookie("cookieName","cookieValue");
System.out.println(String.format("Domain->name->value->expiry->path"));
for(Cookie cookie:cookies)
System.out.println(String.format("%s-.%s->%s->%s->%s",cookie.getDomain(),cookie.getName(),cookie.getValue(),cookie.getExpiry(),cookie.getPath()));
//通过cookie的name属性删除
driver.manage().deleteCookieNamed("CookieName");
//通过cookie对象
driver.manage().deleteCookie(newCookie);
//删除所有cookie
driver.manage().deleteAllCookies();
try {
Thread.sleep(1500);
} catch (Exception e) {
e.printStackTrace();
}
}
WebDriverAPI(10)的更多相关文章
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- Neutron 理解(10):虚拟专用网(VPN)虚拟化 [How Neutron implements VPN Virtualization]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章<Winform开发框架之通用数据导入导出操作>介绍了在Winform ...
- Python的平凡之路(10)
异步IO 数据库 队列 缓存 1.Gevent协程 定义:用户态的轻量级线程.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下 ...
- varchar(10)与nvarchar(10)有什么区别
前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字 后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就 ...
- Spring入门(10)-Spring JDBC
Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...
- Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...
- PHP学习笔记 - 进阶篇(10)
PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...
- .NET设计模式(10):装饰模式(Decorator Pattern)
.NET设计模式(10):装饰模式(Decorator Pattern) 装饰模式(Decorator Pattern) --.NET设计模式系列之十 年月..在....对于..由于使用装饰模 ...
随机推荐
- 【Linux】Jenkins配置和使用(二)
摘要 本章介绍Jenkins的简单使用,关于Jenkins的安装,参照[Linux]Jenkins安装(一) 事例说明:在linux环境下,安装的jenkins,集成svn,tomcat的环境,项目是 ...
- 通过电机编码器AB相输出确定电机转向
AB相输出相差90度,即当A相"正跳变"时如果B相是高电平那么是"正转",反之是"反转" 图片: 正转 反转 #include <Ti ...
- 常见的it软件默认端口
tomcat:8080 nginx:80 mysql:3306 oracle:1521 nexus:8081 浏览器:80 redis:6379 solr:tomcat部署默认8080 jetty部署 ...
- button 左边图片右边文字样式
状态值 : 正常 状态值 : 选中 #pragma mark - buttonPress- (void)buttonPress:(UIButton * )sender { if ( ...
- (最小生成树)Agri-Net -- POJ -- 1258
链接: http://poj.org/problem?id=1258 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...
- HDU1072 Nightmare(BFS) 2016-07-24 14:02 40人阅读 评论(0) 收藏
Nightmare Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth w ...
- FreeBSD查看即时网络流量
1.数据包 “netstat 1″一秒钟累计一次,”netstat 2″两秒钟累计一次.依此类推 2.查看网卡流量:”systat -if 1″每秒钟刷新一次,”systat -if 2″两秒钟刷新一 ...
- 解决Redis/Codis Connection with master lost(复制超时)问题
今天在线上环境中遇到了codis-server报警,按照常规处理流程进行处理,报错步骤如下: 首先将codis-slave的rdb文件移除,并重启codis-slave 在codis-dashbord ...
- TFS 如何強制撤銷被簽出的文件
我们在使用TFS (Team Foundation Server) 源代码管理的时候,源代码管理会在每个PC上创建一个工作区,然后这个工作区域映像到服务器上的源码文件夹,我们在正常签入,签出的时候,我 ...
- EasyUI 让dialog中的treegrid的列头固定
先上效果: 最主要是在treegrid要加上"fit:true "如果不加那么就会用diglog的滚动条,导致treegrid的头就没办法固定. Code<div id=&q ...