selenium webdriver学习(五)------------iframe的处理(转)

selenium webdriver学习(五)------------iframe的处理

博客分类:

如何定位frame中元素

有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个iframe元素或default content中的元素,那必然也定位不到。

selenium webdriver中提供了进入一个iframe的方法:

WebDriver org.openqa.selenium.WebDriver.TargetLocator.frame(String nameOrId)

也提供了一个返回default content的方法:

WebDriver org.openqa.selenium.WebDriver.TargetLocator.defaultContent()

这样使我们面对iframe时可以轻松应对。

以下面的html代码为例,我们看一下处现iframe。

Html代码  

  1. main.html
  2. <html>
  3. <head>
  4. <title>FrameTest</title>
  5. </head>
  6. <body>
  7. <div id = "id1">this is a div!</div>
  8. <iframe id = "frame"  frameborder="0" scrolling="no" style="left:0;position:absolute;" src = "frame.html"></iframe>
  9. </body>
  10. </html>
  11. frame.html
  12. <html>
  13. <head>
  14. <title>this is a frame!</title>
  15. </head>
  16. <body>
  17. <div id = "div1">this is a div,too!</div>
  18. <label>input:</label>
  19. <input id = "input1"></input>
  20. </body>
  21. </html>

Java代码  

  1. import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.firefox.FirefoxDriver;
  4. public class FameStudy {
  5. public static void main(String[] args) {
  6. WebDriver dr = new FirefoxDriver();
  7. String url = "\\Your\\Path\\to\\main.html";
  8. dr.get(url);
  9. //在default content定位id="id1"的div
  10. dr.findElement(By.id("id1"));
  11. //此时,没有进入到id="frame"的frame中时,以下两句会报错
  12. dr.findElement(By.id("div1"));//报错
  13. dr.findElement(By.id("input1"));//报错
  14. //进入id="frame"的frame中,定位id="div1"的div和id="input1"的输入框。
  15. dr.switchTo().frame("frame");
  16. dr.findElement(By.id("div1"));
  17. dr.findElement(By.id("input1"));
  18. //此时,没有跳出frame,如果定位default content中的元素也会报错。
  19. dr.findElement(By.id("id1"));//报错
  20. //跳出frame,进入default content;重新定位id="id1"的div
  21. dr.switchTo().defaultContent();
  22. dr.findElement(By.id("id1"));
  23. }
  24. }

switch_to方法会new1个TargetLocator对象,使用该对象的frame方法可以将当前识别的”主体”移动到需要定位的frame上去。

时间: 2024-08-24 14:03:05

selenium webdriver学习(五)------------iframe的处理(转)的相关文章

Selenium webdriver 学习总结-元素定位

Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法. 1.工具选择:在我们开发测试脚本的过程中各个浏览器给我们也提供了方便定位元素的工具,我比较喜欢使用firefox的firebug工具,也是目前很多开发测试人员比较热衷的选择,原因是firefox是唯一能够集成selenium IDE

Selenium Webdriver 学习总结-Jenkins配置(八)

这周单位要做一个人脸美化的项目,查资料遇到这位大牛的博客,地址如下:点击打开链接 我的代码也是在他的基础上进行修改的,但是他对图像的RGB三个通道平等调节,为了适应我的需求,我改成了针对三个通道分别调节.废话不多说,开始上源码 void ImageAdjust(Mat& src, Mat& dst, vector<double> low_in, vector<double> high_in, vector<double> low_out, vector&

selenium webdriver 学习总结-数据驱动(六)

QQ群:136924235 论坛:http://bbs.shareku.com webdriver可以结合junit中的Parameterized运行器完成数据驱动的目的,数据驱动的方式很多,可以结合csv文件,excel文件,jdbc等,下面我将结合csv,jdbc来展示如何完成数据驱动测试. 一.先给大家介绍一下如何使用Parameterized运行器,两种方式实现. 1.第一种方式,通过构造方法初始化测试数据 代码示例: package junit.parameters; import o

selenium webdriver学习(七)------------如何处理alert、confirm、prompt对话框( 转)

selenium webdriver学习(七)------------如何处理alert.confirm.prompt对话框 博客分类: Selenium-webdriver alertpromptconfirmseleniumwebdriver alert.confirm.prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理. 试用了一下selenium webdriver中处理这些对话框十分方便简洁.以下面html代码为例: Html代码  

selenium webdriver学习(九)------------如何操作cookies(转)

selenium webdriver学习(九)------------如何操作cookies 博客分类: Selenium-webdriver Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. Java代码   import java.util.Set; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebD

selenium webdriver学习(一)------------快速开始(转载JARVI)

selenium webdriver学习(一)------------快速开始 博客分类: Selenium-webdriver selenium webdriver 学习 selenium webdriver学习历程(一)------------快速开始 学习selenium已经两年了,从1.X到2.X,一直在关注它.中间由于工作原因中断了一段时间,但是一直无法割舍,最近又去官网看了一下,更新还挺快的.selenium1.X的时代将被取代,selenium-webdriver的大航海时代开始了

selenium webdriver学习(八)------------如何操作select下拉框(转)

selenium webdriver学习(八)------------如何操作select下拉框 博客分类: Selenium-webdriver 下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选中下拉框选项的方法.select处理比较简单,直接看代码吧:) Java代码   import org.openqa.selenium.By; impo

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面(转)

selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面 博客分类: Selenium-webdriver 元素拖放drag and drop Q群里有时候会有人问,selenium  webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中. http://koyoz.com/demo/html/drag-drop/drag-drop.

Selenium Webdriver 学习总结-Selenium Grid &amp; Webdriver(九)

QQ群: 136924235 论坛 : http://bbs.shareku.com Google教程:https://code.google.com/p/selenium/wiki/Grid2 Hub / Node 系统要求:JDK.firefox.chrome.internetExplorer 所需工具:selenium-server-standalone-xxx.jar 下载地址:http://code.google.com/p/selenium/downloads/list Start