RFS的web自动化验收测试——Selenium2Library升级指南(补充一个问题)
引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面。
( @齐涛-道长 新浪微博)
我搞了个RobotFramework自动化测试公众号
欢迎大家扫一下加入。
这里有最新的安装指南,本文里的版本都比较旧了。
==2013年9月15日补充更新==
==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在处理模态对话框的时候无法起作用。。。
修改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,然后会把他里面的测试库加载进来的。
希望以上内容对大家有所帮助,如有问题欢迎随时在新浪微博 @齐涛-道长 联系我~~~
更多推荐
所有评论(0)