原文地址:http://m.blog.csdn.net/m0_37553368/article/details/78016729
在基于RobotFramework框架使用Selenium2Library库对web系统做UI自动化时经常会遇到元素定位不到的问题,就我目前所遇到的情况,除元素本身定位有误外,大致有5类问题导致元素定位不到,即休眠时间较短、未进入frame、未进行窗口跳转、元素被隐藏、元素为只读。其中,元素被隐藏的解决方法我有参考网上的资料,参考链接见正文。
 
1. 等待时间太短,页面元素还没加载出来,或者没加载全。 ----------解决方案:加长等待时间

sleep    10
 
2. 元素在frame中,需要先进入该frame。有时一个页面内部分元素变化需要先跳出该frame再进入另一个frame
*1*进入frame后页面无变化 --------直接进入frame
*2*进入frame后页面有变化,比如执行搜索后页面展示的数据变化,对变化的数据进行操作
----需要先跳出该frame再进入另一个frame进行操作,有时候两个frame名称一样,但仍须先跳出
*3*进入嵌套frame进行操作 ------先进入外层frame,再进入内层frame,如果有多级嵌套的话,需要一级一级地进入,不能越级
需要关键字

select frame    frame ID或具体locator
 
3. 窗口跳转,在窗口“title1”执行一个操作后跳转到窗口”title2“,对后者的元素进行操作时如果不在脚本里执行窗口跳转的动作,就容易报元素找不到的问题。
需要关键字
select window    title2
4.元素被隐藏,对于元素属性为hidden的情况,需要先执行JS,使元素可见,再对元素进行操作
元素隐藏的方式有:
*1*在css中隐藏:
类型 案例 执行JS
visibility: hidden img#dice
 { float: right;
 margin-left: 2em;
visibility: hidden; }
document.getElementById("EleId").style.visibility="visible";
opacity: 0 img#dice
 { float: right; 
margin-left: 2em; 
opacity: 0; }
document.findElementById('EleId').style.opacity='1'
position: absolute img#dice
 { position: absolute;
 left: -1000px; }
增加left的值,例如:
document.findElementById('EleId').style.left='-2000px'
display: none img#dice { display: none; } document.findElementById('123').style.display
*2*表单中隐藏,例如:
<input type="hidden" name="field_name" value="value">
解决方案:将type="hidden" 改为 type="text",详见:http://blog.csdn.net/superit401/article/details/52094618
Execute Javascript    document.findElementByName('field_name').prop('type','text');
5.元素为只读属性。
 
比如上图 入职时间输入框,如果直接输入,会报错,这时将只读属性去掉即可,解决方案为,执行输入操作前,先执行:
Execute Javascript    document.getElementById('d4311').removeAttribute('readonly')

[转]RF+Selenium2Library元素定位不到的问题的更多相关文章

  1. RF(元素定位)

    1.id 定位 Open Browser https://www.baidu.com gc Input Text id=kw selenium #注意 id 的值 kw 没有用引号括起来 Close ...

  2. Robot Framework 教程 (2) - 页面元素定位

    上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Li ...

  3. Robot FrameWork基础学习(四) 元素定位

    元素定位 对于web自动化测试来说,就是操作页面的各种元素,在操作元素之间需要先找到元素,换句话说就是定位元素. Selenium2Library提供了非常丰富的定位器: 虽然提供了这么多种定位方式, ...

  4. 【WEB自动化】【第一节】【Xpath和CSS元素定位】

    目前自动化测试开始投入WEB测试,使用RF及其selenium库,模拟对WEB页面进行操作,此过程中首先面对的问题就是对WEB页面元素的定位,几乎所有的关键字都需要传入特定的WEB页面元素,因此掌握常 ...

  5. RobotFramework自动化测试之元素定位

    前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id.name.xpath.css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题. id和name定位 ...

  6. robot_framewok自动化测试--(8)SeleniumLibrary 库(selenium、元素定位、关键字和分层设计)

    SeleniumLibrary 库 一.selenium 1.1.Selenium 介绍 Selenium 自动化测试工具,它主要是用于 Web 应用程序的自动化测试,但并不只局限于此,同时支持所有基 ...

  7. selenium元素定位篇

    Selenium webdriver是完全模拟用户在对浏览器进行操作,所有用户都是在页面进行的单击.双击.输入.滚动等操作,而webdriver也是一样,所以需要我们指定元素让webdriver进行单 ...

  8. Uiautomator--Uiselector元素定位

    一.UiSelector作用 按照一定的条件(例如控件的text值,资源id),定位界面上的元素.UiSelector对象的最终目的是去构造一个UiObject对象. 二.元素定位 1.根据text定 ...

  9. selenium使用笔记(三)——元素定位

    selenium进行自动化测试的一个很重要的东西那就是元素定位,如果元素都没法定位就无法操作它,也就无法进行自动化测试了.网上对于元素定位有很多的介绍,很详细很详细的,但是依然有很多新手总是会遇到无法 ...

随机推荐

  1. CodeVs1519 过路费

    题目描述 Description 在某个遥远的国家里,有 n个城市.编号为 1,2,3,…,n.这个国家的政府修建了m 条双向道路,每条道路连接着两个城市.政府规定从城市 S 到城市T需要收取的过路费 ...

  2. msp430入门编程37

    msp430中C语言的可移植--屏蔽实现细节

  3. Two Sum(hashtable)

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  4. [Bzoj3131][Sdoi2013]淘金(数位dp)(优先队列)

    3131: [Sdoi2013]淘金 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 847  Solved: 423[Submit][Status][ ...

  5. POJ 1511 【heap+dij】

    题意: t组样例. 每组有n个节点,有m条单向边. 有m组输入,每组a b c 表示从a到b的单向边的权值是c. 求解,从编号为1的节点出发,有n-1个人,要求他们分别到达编号从2到n的节点再返回,所 ...

  6. 从头开始学Android之(二)—— Android版本

    前面大致的介绍了一下Android的Linux内核层,知道Android是Google在Linux基础上创建的一个应用于移动设备的系统,并在针对移动设备的特殊性,在Linux上做了一些相应的改动建立起 ...

  7. 教你如何查看CAD文件是哪个版本的来自http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html

    教你如何查看CAD文件是哪个版本的 http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html (2013-03-10 22:24:52) 转载▼ 标签: ...

  8. 【stl学习笔记】list

    list使用双向链表来管理元素. 与vector.deque的区别: 1.list不支持随机存取,在list中随机遍历任意元素,是很缓慢的行为 2.任何位置上执行元素的安插和移除都非常快,始终是常数时 ...

  9. [机房合作]—SqlHelper我们又约了

    一.是什么? SqlHelper是一个基于·NET Framework的数据库操作组件,组件中包括数据库操作方法. 二.为什么? 为什么要用SqlHelper类?       1.SqlHelper用 ...

  10. 分享一个检测用户是否用手机(Mobile)访问网站的 PHP 类

    有一个基于MIT License协议开源的PHP程序 http://code.google.com/p/php-mobile-detect/ 程序就是一个文件,下载之后直接引用就可以. 使用方法: & ...