引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面。
( @齐涛-道长 新浪微博)
之前一直使用Selenium2Library的0.5.2版本,现在官方推出了1.0.0版本,本人在升级过程中遇到了很多的问题,于是痛下决心要搞定他,终于搞了几天摸清楚了根本问题,解决了升级后无法加载的问题。
解决办法(感谢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.0用了easy_install)
注意下载的时候选择ZIP下载,不要去下Download里面的,那里面都是坑爹的。。。
(2012-9-13补充:现在应该是1.0.1了,其实download里也有可以用的,就是源码包,而不是exe的)
另外,注意到ZIP左下方的branch了么?这个是master,他的主分支,如果你需要iframe支持的话,建议选择branch下面的iframe分支,选择之后也是点ZIP来下载。
总之就是下面这2个文件了,选择你想安装的进行解压缩。(区别就是master的对iframe不支持,只支持frame,当然,你也可以自己来修改成支持的,或者使用iframe分支)
如果你的电脑可以正常连接外网——我指的是这些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,当然最好从头看比较好。
其实很简单的,把那些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就可以了。
如果碰到无法加载的情况,请看一下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的目录或文件的路径 就会安装成功了。
希望以上内容对大家有所帮助,如有问题欢迎随时在新浪微博 @齐涛-道长 联系我~~~