关于RF对于不在屏幕内的页面元素的处理办法
1、碰到的问题:
最近在公司用Robot framework+Selenium2Library做项目,碰到部分页面比较长,无法完全显示在屏幕内,需要上下滚动滚动条才能看到下半部分的页面元素。于是呼,问题就来了,当我操作未在屏幕内的”继续”按钮(实际是一个超链接)时,案例失败,提示:
ElementNotVisibleException: Message: u'Cannot click on element'。
HTML代码:
<A id=submitButton title=继续href="javascript:void(0)" >继续>继续</A>
2、解决过程:
a) 起初我以为RF不能识别不在屏幕内的页面元素,咨询同事说可以处理,于是自己又开始研究,发现RF确实可以识别不在幕内的页面元素(比如输入框)。通过先对输入框进行赋值操作后,由于屏幕自己下拉继续按钮已经显示在屏幕内了,于是问题看上去似乎解决了。
b) 然而,好景不长,另一个页面出现了同样的问题而且只有一个继续按钮不在屏幕内(无法使用a中先操作其它元素的办法解决),当案例执行到这一步时我手工把页面下拉使按钮显示出来,这时就不会有问题,于是我断定点击按钮操作时屏幕没有下拉,而RF操作时又必须要元素显示在屏幕内。随即我又开始研究Selenium2Library库,一个一个的看S2L库的关键字,发现了Foucs关键字,于是抱着试一试的心理在点击继续按钮前加上了这个Foucs关键字使焦点定位到按钮上,当执行到这一步时继续按钮出现在屏幕上,问题随之彻底解决,很是开心啊!!!
3、总结:
a) 首先,RF对于不在屏幕内的页面元素是可以识别的,RF定位到不在屏幕内的对象会自行下移屏幕。但是对于点击按钮操作,RF没有自行下移屏幕,所以无法进行操作,要想办法使元素能在屏幕中显示出来,focus关键字就很有用处了,因为它要定位焦点,而且会把屏幕下拉,这样一来不在屏幕内的元素就可以显示进行操作了。
b) Execute Javascript 关键字: 这是S2L库中的一个关键字,可以用来执行JS脚本,我觉得这也可以解决上述问题,有时间在研究研究。
关于RF对于不在屏幕内的页面元素的处理办法的更多相关文章
- 弹出iframe内嵌页面元素到父页面并全屏化
(注册博客好久了,一直没舍得添砖加瓦,主要是每次想写点东西的时候,随便搜一搜发现都比我总结的都要好,甚感尴尬,但是总是要开始的,所以这就是我的第一篇博客,也绝不会是最后一篇,废话不多说,直接入正题) ...
- Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)
最近在做ListView分页显示,其中包括图片 和文字(先下载解析文字内容,再异步加载图片)发现每次点击下一页后,文字内容加载完毕,马上向下滑动,由于这时后台在用线程池异步下载图片,我每页有20条,也 ...
- Unity 屏幕外死亡的敌人的分数显示在屏幕内
在敌人死亡后,会出现分数,如果敌人死亡的位置在屏幕内,那么使得获得的分数显示在屏幕内,超出屏幕范围的,显示在屏幕外 当然,这里例子是使得场景中的物体显示在屏幕内,当然也可以使用纯粹的UGUI物体的显示 ...
- WPF C# 多屏情况下,实现窗体显示到指定的屏幕内
原文:WPF C# 多屏情况下,实现窗体显示到指定的屏幕内 针对于一个程序,需要在两个显示屏上显示不同的窗体,(亦或N个显示屏N个窗体),可以使用如下的方式实现. 主要涉及到的:System.Wind ...
- HTML的块状、内联、内联块状元素的特点
元素分类及特点: 1.块级元素: 在html中<div>. <p>.<h1>.<form>.<ul> 和 <li>就是块级元素. ...
- css块级元素,内联元素,内联块状元素
块元素 什么是块级元素?在html中<div><p><h1><form><ul>之类的就是块级元素.设置display:block是就将元素 ...
- 学习笔记——关于HTML(含HTML5)的块级元素和行级(内联)元素总结
1.首先我们要知道什么是块级元素和行级(内联)元素? 块级(block)元素的特点: ①总是在新行上开始: ②高度,行高以及外边距和内边距都可控制: ③宽度缺省是它的容器的100%,除非设定一个宽度: ...
- css选择器(选择<div>内所有<p>元素)
情况1:<div><p></div> 情况2:<div><a><p></p></a></div&g ...
- 如何根据iframe内嵌页面调整iframe高宽续篇
接着昨天的工作 如何根据iframe内嵌页面调整iframe高宽 来说,按照文章中说的第二种方法实现代码如下: 实现 A.com/detail/view 页面的iframe代码如下: <ifra ...
随机推荐
- delphiredisclient开源GIT
delphiredisclient - Redis client for Delphi Delphi Redis Client版本2(此分支)与Delphi 10.1 Berlin兼容,更好.警告!如 ...
- 浅析c++中virtual关键字
http://blog.csdn.net/djh512/article/details/8973606 1.virtual关键字主要是什么作用? c++中的函数调用默认不适用动态绑定.要触发动态绑定, ...
- Ioc:Autofac Registration Concepts
Reflection Components When using reflection-based components, Autofac automatically uses the constru ...
- 详细解释如何通过Android自带的方式来实现图片的裁剪——原理分析+解决方案
我们很多时候需要进行图片的裁剪,其实这个功能在android系统中已经有一套解决方案了,虽然界面和效果并不是很优秀但功能毫无疑问是完美实现了.至于,不用自带的方案怎么做自定义,这个就是后话了.本篇主要 ...
- Toast的用法(可以设置显示时间,自定义布局的,线程中的Toast)
自定义的Toast类 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- SimpleAdapter和AutoCompleteTextView配合使用
修改后成为这样→ package com.kale.autocompletetextview; import java.util.ArrayList; import java.util.Has ...
- [Android Security] Smali和逆向分析
copy : https://blog.csdn.net/u012573920/article/details/44034397 1.Smali简介 Smali是Dalvik的寄存器语言,它与Java ...
- Asp.Net Mvc Action过滤器(二)
在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...
- ubuntu下如何批量修改文件后缀名
正确的方法是: 在命令行中输入 rename 's/\.JPG/.jpg/' *.JPG [注意] 在单引号中的最后一个'/'符号不能少! 意思是:把当前文件夹下的所有 .JPG文件 替 ...
- PHP Curl实例
URL Link : http://www.groad.net/bbs/forum-115-1.html