关于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 ...
随机推荐
- springboot中配置druid允许一次执行多条sql
原文:https://blog.csdn.net/jiangjun0130/article/details/77868578 1:在配置文件中不需要指定wall防火墙filter. 配置如下: spr ...
- C/C++中const关键字
http://blog.csdn.net/xdrt81y/article/details/24333335 今天在做一个趋势笔试题的时候,才让我有了系统把const关键字好好总结一下的冲动,因为这个关 ...
- Linux学习11-CentOS如何设置java环境变量
前言 之前用yum安装的java,现在想添加环境变量,yum安装的java路径在哪呢?如何找到安装的路径,把jdk添加到环境变量. 本篇详细讲解linux系统设置java环境变量 找到jdk路径 之前 ...
- 设置Images.xcassets后启动仍旧黑屏的问题
换了XCode6之后,发现以前写Icon-76.png这样很麻烦,就使用了Image.xcassets,公司所有测试机跑了一下,发现没什么问题.唯独有一台设置有问题,iphone5 ios6.0系统, ...
- epoll的两种工作模式
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在採用这两种模式时要注意的是,假设採用ET模式,那么仅当状态发生变化时才会通知,而採用L ...
- ArrayAdapter使用方法
ArrayAdapter是一个简单的适配器,他的作用是将一个数组中的内容放入listView中.listView的item必须为textView. MainActivity.java package ...
- scala编程第15章
package myscala15import myscala.Element.elemimport myscala.Element sealed abstract class Expr case c ...
- 混沌分形之马丁(Martin)迭代
我不记得从什么地方看到的这种分形图形生成方式,再到网上找竟然一时没查到任何相关资料.没关系,总之这种图形也很漂亮多变,并且其算法比较简单.只是我最后生成的图像有点瘆人,密集恐惧症患者慎入. 相关代码如 ...
- “秘书九段的故事”,要学会给自己制定一个工作N段或者技术N段
总经理要求秘书安排次日上午九点开一个会议.在这件事下,什么是任务?什么是结果? 通知到所有参会的人员,然后秘书自己也参加会议来做服务,这是“任务”.但我们想要的结果是什么呢?下面是一至九段秘书的不同做 ...
- 使用C#反射机制访问类的私有成员【转】
首先我必须承认访问一个类的私有成员不是什么好做法.大家也都知道私有成员在外部是不能被访问的.而一个类中会存在很多私有成员:如私有字段.私有属性.私有方法.对于私有成员访问,可以套用下面这种非常好的方式 ...