robotframework + selenium2library 一点测试的经验

1 对于元素的外层包括frame/iframe标签的。一定要先select  frame name=xxx,然后再操作元素。

Select frame name=新建个案

click element  id=  xxxxx

2 对于window.showModalDialog()模式打开的新窗口
Eg.点击“支付详情”的“详情”,出来一个新页面。如何定位呢?单纯的select window title=payDetail page  是定位不到新窗口的。解决办法如下:



第一句话取的Id就是要点击按钮的Id,已经实验过,网上的经验也说明,直接click element id=xxx 是没有效果的。要用上面的第一句javascript执行点击按钮。
 
3 对于例子2 新打开的窗口没有title,用url不能定位到,如何解决呢?
比如:点击“充值退款”出现如图窗口。Select window url=xxxx 根本定位不了。
 

网上有大神在selenium的源码里添加了几个关键字。这样我们就可以使用了。操作如下:
D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\locators  (根据自身情况而定)
中的windowmanager.py 增加了方法
 
    def select_by_handle(self, browser, toHandle):
        browser.switch_to_window(toHandle)
 
    def get_window_handles(self, browser):
        return [ window_info[0] for window_info in self._get_window_infos(browser) ]
 
    def get_current_window_handle(self, browser):
        return browser.get_current_window_handle()
 
D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\keywords
中的_browsermanagement.py 增加如下方法
 
    def select_window_by_handle(self, locator=None):
        self._window_manager.select_by_handle(self._current_browser(), locator)
 
     def get_window_handles(self):
        """Returns and logs handles of all windows known to the browser."""
        return self._log_list(self._window_manager.get_window_handles(self._current_browser()))
 
    def get_current_window_handle(self):
        """Returns and logs handle of current window known to the browser."""
        return self._log_list(self._window_manager.get_current_window_handle(self._current_browser()))
 
==============================分割线==================================
按上述添加上,然后可以使用他新添加的关键字了。
 
网上大神只写了办法,没有说明他的关键字的使用方法。
我研究了下用法,实验成功。具体脚本如下。


解释
@{b} get window handles //@{b}变量保存当前所有的窗口。@符号表示这个变量是集合。
Select window by handle  ${b[1]}//这个是取变量b里面的第二个窗口。(下标从0开始)。
 
4 特殊下拉框的选择
 
对于这种下拉框,一拉啥没有。


代码中也没有任何可操作的select option标签等。如何是好。
既然下拉框,那就总可以选择。我们输入一个名“王XX”,下拉框自动出现这样。


但是怎么选择上?代码实在没有相应的元素来操作啊。
不过,我们操作键盘,向下键,enter键,即可成功选择。
那问题就变成如何在robotframework+selenium2library中操作键盘。api给的很简单,press key  xxxx。
查了向下键的ascii为40,enter键的为13.但是久经试验都不对。网上说可以考虑看下selenium的源码中向下键的标识用“\ue015”,好奇怪,我也不懂,就用了,果真对了。
相应脚本:

 

有了键盘操作,一系列的特殊下拉框应该没有问题了。
对于一些不能用ascii码操作键盘的,可以查下selenium的源码,看看源码里对某个键的表示到底是什么。
 
 
5 对于页面弹个框

类似于网页弹出的这样的框。应该更准确的说,是alert(“”)弹出的对话框。

两步即可:

 

6 对于在jenkins上运行出现奇怪错误。
对于一些测试用例,明明本地和远程robotframework都跑的很顺畅,在jenkins上构建就一直出这样的错误:
WebDriverException: Message: u‘unknown error: Element is not clickable at point (69, 444). Other element would receive the click:
这种鬼错误,很烦躁。
 
解决办法:
Click  element  xxx  换成 execute javascript  document.getElementById(‘xxx‘).click()
基本换成javascript执行,都会轻松通过。如果元素没有ID的话,要用css定位的话,我用的jquery来执行。
Execute javascript  $(“css”).click()。
 
7 对于上传下载的操作
网上有个AutoItLibrary,跟selenium2library类似,可以找下网上的安装方法,网上也有简单例子。本测试过程没有用到,不再详述。
时间: 2024-10-01 06:17:57

robotframework + selenium2library 一点测试的经验的相关文章

RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)

在上一篇RobotFrameWork接口报文测试-----(二)demo的升级版基础上,将接口的xml的格式保存在xml文件中,然后程序如果增加一个接口,在xml文件里添加即可,无需修改自动化测试里的其他模块,然后在工具加case就可以了,但是接口取值的数据全部都是直接在case里面录入的,也就是说,每增加一条测试用例,就需要在工具内添加一条case,测试数据始终都是在工具内控制,这让以前使用excel管理过测试数据的我感觉很不爽,总感觉得把数据放到excel内,然后实现数据驱动测试. 围绕着这

robotframework+Selenium2Library 特殊下拉框的选择

4 特殊下拉框的选择   对于这种下拉框,一拉啥没有. 代码中也没有任何可操作的select option标签等.如何是好. 既然下拉框,那就总可以选择.我们输入一个名“王XX”,下拉框自动出现这样. 但是怎么选择上?代码实在没有相应的元素来操作啊. 不过,我们操作键盘,向下键,enter键,即可成功选择. 那问题就变成如何在robotframework+selenium2library中操作键盘.api给的很简单,press key  xxxx. 查了向下键的ascii为40,enter键的为

C# 异步工具类 及一点小小的重构经验

2015年新年第一篇随笔, 祝福虽然有些晚,但诚意还在:新年快乐. 今天主要是想分享一异步工具类,在C/S架构中.先进行网络资源异步访问,然后将回调函数 Invoke到UI线程中进行UI处理. 这样的场景是及其常见的,因此特意封装了一工具类,用以简化操作. /// <summary> /// 异步工具类 /// </summary> public class TaskTools { /// <summary> /// 是否 在执行回调函数之前修改Running状态 //

RobotFramework:python+robotframework+selenium2library测试环境部署说明文档

[来自组内整理文档] 一.部署环境准备 操作系统:Win7-64位或win7-32位或win10-64位 内存:DDR3, 4GB以上 运行环境:JDK1.8环境 安装jdk1.8.0_101 Java环境变量-系统变量配置 JAVA_HOME,配置为jdk安装地址 Classpath配置为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; Path变量值后面加上 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 运行cmd.exe

清华OJ,一点刷题经验

清华大学公选课数据结构A作业范围查询:http://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=936 花了接近一周时间,终于搞定了这题作业.作业并不难,但是无论我如何改进代码总是超时,导致我一度放弃.今天终于做出来了,对C++的输入输出有了全新的认识. 此前用自己的方法写下了C++代码,但无奈总是超时,于是在网上搜到了这篇博客:http://blog.sina.com.cn/s/blog_59fa585c0102v2el.html 我几乎照着代码改了一

高项通过的一点感想和经验

这次是第二次考高项,第一次因为论文没过,特别懊恼.这次考试准备的时候特别把论文作为重点,感谢老师在考前一周多的论文押题,然后按照选题结合自己的工作经验,把论文写完,然后发给老师通过后开始一段一段的背,没有办法,论文只能背,把主要的提纲列出来,然后重点段落反复背,再抄写几次.上午题我是反复看老师的视频,这个太关键了,结合教材以及历年真题.下午案例我把重点放在计算题,各个题型反复做,然后再看以前的真题,考试的时候尽量多写要点. 虽然考试过程很辛苦,但是在得知通过后,所有的一切都变得美好了!感谢老师,

测试实战经验之checklist篇20140905

我们测试中,在各个环节应该有自己的一个checklis来帮助我们梳理我们要做什么,该做什么,以下是我的一个小总结: 1.在测试前我们需要做的: 2.在拿到测试包后我们该做的 3.测试通过后我们该做的

手机终端高级测试工程师经验总结

终端测试的生命周期: 无线通信 包括协议.2G/3G/4G.机卡的一致性 2.业务应用 功能模块测试:首先应分析功能模块的功能项,测试每个功能项是否能够实现对应的功能.一般根据测试案例(Test Case)或软件本身的流程就可以完成基本功能测试.(相对简单,故障也较容易解决) 交叉事件测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试.例如通话过程中接收到短信或来响闹.应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题. 交叉事件测试非常重

robotframework+Selenium2Library 模态窗口的处理

所谓模态窗口,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框.(说白了,就是弹出了模态窗口之后,后面的窗口无法被点击) 这里有个demo页面http://www.robotframework.net/ ... alogA 对于window.showModalDialog()模式打开的新窗口 Eg.点击“支付详情”的“详情”,出来一个新页面.如何定位呢?单纯的select window title=payDetail page  是定位不到新窗口的.解决办法如下: