自动化测试selenium(三) 由于iframe 定位不到元素
iframe原因定位不到元素
现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签;
我们先说说iframe在java中使用的方法;
driver.switchTo().parentFrame();//子frame切回到父frame
driver.switchTo().frame();//切入frame中
driver.switchTo().defaultContent();//从frame中切回主文档
想要定位iframe并切进去,可以通过如下代码:
driver = webdriver.Firefox();
driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0
driver.switch_to.frame("frame1") # 2.用id来定位
driver.switch_to.frame("myframe") # 3.用name来定位
driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement对象来定位
通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:
- index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
- WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象
举个例子来切入iframe

用xpath定位,传入WebElement对象:
driver.switchTo().frame(driver.findElement(By.xpath(("//iframe[contains(@src,'/gdgs/single_tree/list')]"))));
当我们遇到页面有三个iframe,在iframe间切换时,该怎么做呢?

当我切入菜单<iframe src="//iframe[contains(@src,'/gdgs/single_tree/list">这个iframe时,我的实现是这样的
driver.switchTo().frame(driver.findElement(By.xpath(("//iframe[contains(@src,'/gdgs/single_tree')]"))));
但是现在我想进入update 这个iframe,我先需要回到主页面,使用
driver.switchTo().defaultContent();
再进入update,发现不可以,原因是:我们需要等待,浏览器还没来得及做出反应;
Thread.sleep(2000);
总而言之,在进行iframe切入时,我们最好设置等待,才能正确切入iframe,看到效果,操作我们想要操作的元素。
自动化测试selenium(三) 由于iframe 定位不到元素的更多相关文章
- UI自动化测试(三)对页面中定位到的元素对象做相应操作
前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...
- Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法
本篇以实例介绍selenium下的webdriver模块提供的定位页面元素(也可以称为对象)的方法和使用技巧,在此注意:在做WEB自动化测试前,需要对前端相关的技术有所了解,如HTML.XML.Xpa ...
- Robot Framework自动化测试(三)---Selenium API
Robot Framework Selenium API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium 关键字库. 一.浏览器驱动 通过不同的浏览器执行脚本. Op ...
- python+selenium四:iframe查看、定位、切换
iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...
- Selenium自动化测试Python三:WebDriver进阶
WebDriver 进阶 欢迎阅读WebDriver进阶讲义.本篇讲义将会重点介绍Selenium WebDriver API的重点使用方法,以及使用模块化和参数化进行自动化测试的设计. WebDri ...
- selenium iframe 定位 qq空间说说
selenium iframe 定位 qq空间说说
- web自动化测试-selenium的三种等待
一.等待的作用 1.在系统的功能运行过程中,所有的内容是需要一定的时间来实现展示, 2.时间耗费长短与网络速度.系统框架设定.接口的执行复杂度有关, 3.因此需要设置缓冲时间,若未设置缓冲时间,容易导 ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
- 总结Selenium自动化测试方法(三)WebDriver定位元素方法
三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls. ...
随机推荐
- 解决get乱码
也可以在tomcat中修改,但是每次配置tomcat中都得修改.容易忘记,还是图片这个方法最好,推荐
- Win10下安装RabbitMQ以及基本知识学习
一.为什么选择RabbitMQ? 先说一下场景,这是我们公司遇到,当然我这里不做业务评价哈?虽然我知道他很不合理,但是我是无能为力的.APP端部分注册是Java开发的系统,然后业务端是C#开 ...
- TI-RTOS 之 GPIO中断(按键)
TI-RTOS 之 GPIO中断(按键) 前面已经用过LED, 定时器,这次来了解GPIO的中断是怎么用的,从CC1310+TI-RTOS的例程可以直接找到相应的例子程序,它的关键是在于要使能中断,也 ...
- 如何让低版本IE浏览器支持HTML5标签并为其设置样式
现代的浏览器都支持HTML5,HTML5定义了 8 个新的 HTML 语义元素.所有这些元素都是 块级 元素. 为了能让旧版本的浏览器正确显示这些元素,你可以设置 CSS 的 display 属性值为 ...
- 【JSP/Servlet】后台如何获取复选框或可选属性的同名参数
感觉自己jsp/servlet部分学的太差了--今天突然想到还有这种操作,遂分享之 比如有些时候我们需要使用复选框发送同名数据的时候,后台接收参数是个麻烦事,还有可选属性也是如此 有丰富经验的会想到a ...
- php 下载文件的头信息 Determine Content Type
<?php if(!function_exists('mime_content_type')) { function mime_content_type($filename) { $mime_t ...
- sqlite3-入门教程
*** 非常好 http://wenku.baidu.com/link?url=xDoS4prJaGRac0QS0nxdNr6056N-qJIfZ7OhiTharj1ntuIsNy9sWXWvBXLh ...
- IT术语的正确读法
Linux /ˈlɪnəks/ /ˈlɪnʊks/(EU) Linux 是一类 Unix 计算机操作系统的统称.该操作系统的核心的名字也是“ Linux” .参考: < !-- m --> ...
- Angular 4 设置组件样式的几种方式
你用Angular吗? 一.介绍 如何只改动最简单的css代码,呈现完全不一样的视图效果. 第一种:最基本的设置: 图1 代码 图2 界面运行效果图 平常,想给一个label或者p等标签添加样 ...
- jQuery操作表格(table)的常用方法、技巧汇总
摘录自:http://www.jb51.net/article/48943.htm 虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便 ...