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设计模式系列之十 年月..在....对于..由于使用装饰模 ...
 
随机推荐
- 2018.09.20 atcoder Painting Graphs with AtCoDeer(tarjan+polya)
			
传送门 一道思维题. 如果没有环那么对答案有k的贡献. 如果恰为一个环,可以用polya求贡献. 如果是一个有多个环重叠的双联通的话,直接转化为组合数问题(可以证明只要每种颜色被选取的次数相同一定可以 ...
 - 2018.08.30 NOIP模拟 graph(dfs序/树剖+线段树)
			
[描述] 给你一个图,一共有 N 个点,2*N-2 条有向边. 边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点 到达. 2. 接下来的 N ...
 - 2018.08.27 lucky(模拟)
			
描述 Ly 喜欢幸运数字,众所周知,幸运数字就是数字位上只有 4 和 7 的数字. 但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列. 哈哈,是 不是感觉被耍了,没错,你就是被耍了. ...
 - 2018.07.18 洛谷P1171 售货员的难题(状压dp)
			
传送门 感觉是一道经典的状压dp,随便写了一发卡了卡常数开了个O(2)" role="presentation" style="position: relati ...
 - Center Alignment
			
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93359#problem/B(456321) http://codeforces.com/ ...
 - noip第10课作业
			
1. 统计不同类型字符出现次数 [问题描述] 输入一个字符串(假设长度不超过1000个字符),统计其中大写,小写,数字,其他字符出现的次数. [样例输入]Hello,what are you ...
 - vc创建模态和非模态对话框
			
模态对话框的创建 创建模态对话框需要调用CDialog类的成员函数:DoModal,该函数的功能就是创建并显示一个模 态对话框,关闭模态对话框的函数是EndDialog,该函数需要一个参数,这个参数就 ...
 - hdu 4952 暴力
			
http://acm.hdu.edu.cn/showproblem.php?pid=4952 给定x,k,i从1到k,每次a[i]要是i的倍数,并且a[i]大于等于a[i-1],x为a0 递推到下一个 ...
 - hdu 5012 模拟+bfs
			
http://acm.hdu.edu.cn/showproblem.php?pid=5012 模拟出骰子四种反转方式,bfs,最多不会走超过6步 #include <cstdio> #in ...
 - dubbo 源码编译记录
			
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,阿里内部采用sofa框架,同属于分布式RPC框架,dubbo开源,而sofa ...