引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面。

( @齐涛-道长 新浪微博)

 

我搞了个RobotFramework自动化测试公众号

欢迎大家扫一下加入。

这里有最新的安装指南,本文里的版本都比较旧了。

==2013年9月15日补充更新==

官方最近更新很快啊,已经release了1.4.0版本了,不过从1.2.0开始官方没有做exe包了,本身我也觉得exe没啥用,还是用源码安装比较好。现在官网github上,要点release的链接就能看到发布的版本了。

如果是首次使用RF在IE浏览器上测试的同学,务必检查以下几个设置:
1、IE选项设置的安全页中,4个区域的启用保护模式的勾选都去掉(或都勾上)
2、IE选项设置的连接页中,局域网设置里的代理服务器设置,不能勾选。如果需要配置代理,请使用上面的pac自动配置脚本来使用代理。
3、IE页面的显示比例要为100%
4、下载IEDriverServer.exe文件,放到环境变量path路径的目录里或把他所在的目录加到path环境变量中。下载地址为:http://code.google.com/p/selenium/downloads/list

==2013年9月3日补充更新==

目前release的最新版本Selenium2library是1.1.0,下面的一些问题已经基本解决。1.2.0已经有部分更新了,但是还没有release。
Selenium2library的依赖库可以根据自己的情况在安装时自动下载,或者自己单独下载各个依赖库,下面这个只是依赖库的最低版本,实际版本都比较新了,用最新的就好了。想了解一些具体情况的可以看看旧版内容

decorator >= 3.3.2
selenium >= 2.12.0
robotframework >= 2.6.0
docutils >= 0.8.1

另外本升级指南后续将不再置顶,具体取消置顶日期待定,取消置顶后将换成RF常见问题指引,我会将平常自己遇到和大家遇到的问题都整理一下,方便以后遇到类似问题的同学查看。

==以下都是旧版内容,仅供参考==

之前一直使用Selenium2Library的0.5.2版本,现在官方推出了1.0.0版本,本人在升级过程中遇到了很多的问题,于是痛下决心要搞定他,终于搞了几天摸清楚了根本问题,解决了升级后无法加载的问题。

补充一个问题:1.0.0版本的select window在处理模态对话框的时候无法起作用。。。

解决办法(感谢FIGESZ和吴穹博士的指导):

修改webdrivermonkeypatches.py文件中的:

#atts = self.execute_script("return [ window.id, window.name, document.title, document.location ];")
atts = self.execute_script("return [ window.id, window.name, document.title, document.url ];")

吴博对此的解读是S2L1.0.0是基于FF的,在IE的处理上这里就算一个bug了。所以其实吴博在给我们的0.5.2版本里也做了同样的修改的。

 

我这里先给出解决方案吧,有兴趣的同志们可以看看另一篇的解决过程。

==解决方案==

1、针对已经安装0.5.2版本的朋友,把python27\Lib\site-packages目录下的Selenium2Library目录删除,然后继续第2步。如果没有安装过,请从第2步开始。

(其实不删除应该也是可以的,因为1.0.0用了easy_install)

 

2、到官网上下载1.0.0版本的源码包,地址:https://github.com/rtomac/robotframework-selenium2library

注意下载的时候选择ZIP下载,不要去下Download里面的,那里面都是坑爹的生气。。。

(2012-9-13补充:现在应该是1.0.1了,其实download里也有可以用的,就是源码包,而不是exe的)

另外,注意到ZIP左下方的branch了么?这个是master,他的主分支,如果你需要iframe支持的话,建议选择branch下面的iframe分支,选择之后也是点ZIP来下载。

总之就是下面这2个文件了,选择你想安装的进行解压缩。(区别就是master的对iframe不支持,只支持frame,当然,你也可以自己来修改成支持的,或者使用iframe分支)

 

3、接下来是一个特殊选择:

如果你的电脑可以正常连接外网——我指的是这些python和selenium的官方网站——那你完成这步就可以了大笑

如果是公司局域网无法访问外网,那么就请跳过此步,直接看第4步了微笑

如果你不确定是否能联网,那么在执行install有报错说无法获取url的那就是你没法访问了,也请看第4步快哭了

把你需要的那个版本的ZIP文件解压缩后,到命令行进入解压的目录,执行python setup.py install即可。他会联网下载缺少的内容。

首先会下载setuptools-0.6c11-py2.7.egg,他是后面一切安装的基础。(如果这个无法下载或者有问题,可以去下载一下setuptools的exe单独安装一下)

setuptools安装成功之后会下载4个依赖库,在src目录下的egg.info目录里,有一个requires.txt里面有如下内容

decorator >= 3.3.2
selenium >= 2.8.1
robotframework == 2.6.3——注:因为我本机已经安装RF,所以他不再下载
docutils >= 0.8.1

他会自动匹配最合适的版本进行下载,最终完成后,你可以在python27\Lib\site-packages目录下找到相关的目录,都是.egg结尾的目录。

除此以外还安装了一些小的文件,我会在解决过程篇列出。

如果安装完成后在RIDE中加载Selenium2Library后按F5还是没看到他被加载进来的话,请看第5步。

最近经常有人问我RIDE安装完成之后打开按F5看不到Selenium2Library,请注意我的原话是在RIDE中加载Selenium2Library后(而不是单纯打开RIDE就去按F5)。

那么加载的意思简单说就是在Test Suite里使用Add Library,然后输入Selenium2Library,把他加载到这个Test Suite里之后,再按F5查看。可能我的描述让大家出现了困扰,非常抱歉。

如果不清楚上述动作的童鞋可以看一下我的这篇文章,里面有介绍如何添加Library,当然最好从头看比较好。

 

4、针对公司局域网无法从外网下载文件的方法。

其实很简单的,把那些egg文件和目录在家里下载下来,拷贝或者发到公司里吧。

如果你的公司局域网又不能访问外网,又不能从外面拷贝或者发送文件进来,那么我只能说悲催的孩子委屈,我也没办法处理这个纯断网环境了。

如果有条件的可以在自己家里把上面的4个文件,都是egg结尾的文件和目录拷贝过去(图中Selenium的不用拷贝,pth的不用拷贝),这里老道长也提供一个已经打好压缩包的,和我说的4个是一致的:

Selenium2Library1.0.0必备离线升级包 http://download.csdn.net/download/tulituqi/4331624

下载下来之后,将里面的所有.egg(文件和目录)都放入你解压缩的Selenium2Library1.0.0的源码目录内,和setup.py同一级即可。

然后执行python setup.py install就可以了。

 

5、检查是否加载测试库。

如果碰到无法加载的情况,请看一下site-packages目录内的easy-install.pth文件(就是我刚才图里特意加加进来的那个文件大笑)的内容,用UE或者其他文本工具打开吧。

记事本不太好看,他没有自动换行。

如果看到 ./ 开头的和我这个基本一样就可以了,顺序无所谓。

import sys; sys.__plen = len(sys.path)
./setuptools-0.6c11-py2.7.egg
./robotframework_selenium2library-1.0.0-py2.7.egg
./docutils-0.9-py2.7.egg
./selenium-2.21.3-py2.7.egg
./decorator-3.3.3-py2.7.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)


这上面最后2个就是Selenium2Library的最主要依赖的库了,之前在公司里安装不成功主要是无法下载,同时又缺少这几个egg支持。

如果你的不全,看看缺哪个,可以重复第4步,也可以单独安装缺的那个蛋(egg)。

补充单独安装的办法:

首先确保setuptools是安装成功的,基本上按第3或4步做了的都会安装成功,安装成功的同时会在python27\Scripts目录下安装一些easy_install的文件。

我们就在命令行进入该目录,输入命令  easy_install egg的目录或文件的路径 就会安装成功了。

 

总结,最新的1.0.0主要采用了easy-install的安装,通过安装egg形式的蛋来安装python的模块或测试库,而在RIDE里加载Library的时候也会先看easy-install.pth有哪些egg,然后会把他里面的测试库加载进来的。

 

希望以上内容对大家有所帮助,如有问题欢迎随时在新浪微博 @齐涛-道长  联系我~~~

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐