原文地址: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. HDU 1102 Kruscal算法

    题目大意:给定村庄的数量,和一个矩阵表示每个村庄到对应村庄的距离,矩阵主对角线上均为1 在给定一个数目Q,输入Q行之间已经有通道的a,b 计算还要至少修建多少长度的轨道 这道题目用Kruscal方法进 ...

  2. 【尺取】HDU Problem Killer

    acm.hdu.edu.cn/showproblem.php?pid=5328 [题意] 给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多 ...

  3. mybatis查询返回null解决方案

    mybatis查询返回null解决方案: 问题:查询出的列与javabean中的字段名不一致. 解决方案: 1.将javabean中的字段改为和查询出的列名一致: 2.将sql加入as改变列名,和ja ...

  4. Java调用K3Cloud的密码加密算法实现登录密码检验

    背景: 最近要开始做K3Cloud移动,BOS平台的移动单据收费,就想单独做移动模块,搭建环境:后台SSH2,前端Android.在手机端登录时通过Ajax方式传递用户名和密码到后台校验,后台在去K3 ...

  5. C++,C程序设计入门——《高质量程序设计第4章》

    1. 连接规范 1. extern “C” 2. 一部分采用C的连接规范 #ifdef __cplusplus extern "C" { #endif #ifdef __cplus ...

  6. 【Java源码】集合类-ArrayDeque

    一.类继承关系 ArrayDeque和LinkedList一样都实现了双端队列Deque接口,但它们内部的数据结构和使用方法却不一样.根据该类的源码注释翻译可知: ArrayDeque实现了Deque ...

  7. "格式太旧或是类型库无效。 (异常来自 HRESULT:0x80028019 (TYPE_E_UNSUPFORMAT))"

    错误提示内容: “System.Runtime.InteropServices.COMException (0x80028019): 格式太旧或是类型库无效. (异常来自 HRESULT:0x8002 ...

  8. SharePoint 2013 调查问卷的使用方法

    SharePoint 2013 调查问卷的使用方法 1,介绍调查问卷的用法. 2.图形和全部结果. 3,控制用户仅仅能看到自己答案. 1.确认有权限,假设没有管理管理权限请向管理员申请. 站点&quo ...

  9. webpack-Module Resolution(模块解析)

    模块解析(Module Resolution) resolver 是一个库(library),用于帮助找到模块的绝对路径.一个模块可以作为另一个模块的依赖模块,然后被后者引用,如下: import f ...

  10. 再谈OpenCV

    虽然之前写过一篇关于OpenCV的介绍(http://blog.csdn.net/carson2005/article/details/5822149).但依旧有朋友对其不甚了解.所以,常常能碰到有人 ...