一天,我们的产品经理“乔哥”跟我说:现在你学习的selenium不仅可以实现批量采集,而且也可以帮助我们的测试组实现部分自动化。心花怒放的我很开心的就接下了这个案子,于是就有了这篇博客。
首先来“po”一张我们测试组妹子的照片吧
差不多就行了,别老看了。来谈一谈项目。
项目环境:
(1)测试妹妹机器,windows7系统,8GB内存, 因为妹子正在学习Java,所以windows的环境变量也配的比较多。桌面比较乱,第一次看,我以为自己看见了银河。
(2)我的机器,ubuntu系统,8GB内存。环境变量(PATH)心中有数,桌面干净整洁。
项目的本身是没有多少技术含量的,就是使用selenium来模拟网站的登录操作。这方面的资料在百度上一搜能搜一大堆。关键是需要考虑怎样让自己写好的东西,在妹子那里能最简单,改动最小,后续可维护,最少出错的运行起来。
为此我想了四种办法。来分别谈一下利弊。
一、利用python打包工具,将写好的文件打包,发送给妹子。让妹子在她的本机点一下那个exe文件。
利:
只会给同事一个可执行的exe文件,我觉得这样保护了我的“智慧结晶”而且看上去十分精致小巧,同时,如果考虑周全的话,可移植性是比较好滴。
弊:
python打包工具,之前帮SEO组做过一些小工具,通常是使用py2exe和pyinstaller。后来发现这种方式维护的成本极高,在于,这种工具可能后期同事要求加的功能越来越多。而本机与同事之间的环境不同。在后期同事要求增加功能时,需要再在本机写代码,再打包给同事。本机调试通过之后,不一定在同事那里就会很顺利。所以在同事那里还需要进行调试。
而写这种小工具需要考虑到效率和可维护。通常写对这种工具维护时间不会超过半个小时的时间。而要同时考虑到脚本在不同机器之间的运行情况。需要的时间肯定远远的超过半个小时了。
二、给妹子的电脑直接配python环境。让妹子在她的本机点一下.py文件。
利:
一个字“方便”,(如果能够配好的话。)前期就直接在妹子电脑上配环境,写代码。有什么改动就直接在妹子机器上改就行了。维护的时间成本也低了很多。
弊:
彻底没有了可移植性,以后妹子这台电脑坏了,其他妹子也要使用这种自动化测试,那我需要在所有的妹子电脑上配环境,并贴好代码。维护成本瞬间呈倍数上升。
实际情况是:
妹子的电脑开机就像银河。环境变量遍地丛生。如果我直接动她的环境变量,可能会打乱她原来的环境变量。(好吧,我承认是我对windows不太熟悉。)。另外工作时长也有限,不能占用妹子太多的时间去配环境。还有在真正执行操作时,可视化的自动化测试界面会打乱,妹子在做的其他工作。
(这是银河)
三、在我的本机中,写好脚本之后,让妹子切换到和我同在的局域网中用shell执行。
利:
一个字“简单”,只需要告诉妹子几句命令,给她弄个“xshell”。到时候直接连接上我的电脑。就可以执行操作了。
弊:
没有可视化界面。作为测试媛,出错后,用“看的”才能方便的知道哪里出错了。另外单位的局域网是个问题,因为我们单位是个大公司,所以妹子和我并不在同一个局域网下。想要执行此操作,就必须要切换到我设置了白名单的局域网下。这样就比较麻烦。
四、我的本机和妹子的本机中同时安装vmware。在我在我的虚拟机中配好环境,写好脚本。再移植给妹子。
利:
可移植性较高,只需要把虚拟机中对应的系统文件复制好,粘贴给妹子,妹子那边一打开,立马就能用,因为vmware是跨平台的,所以我的脚本也是跨平台的。同时文件是可以复制给所有人的,如果其他人也需要,让他安装一个vmware就好了。
可维护性较高,我本地改好,立马复制给她,不需要太多时间,不需要考虑平台问题,不需要考虑是否占用妹子时间,也不需要考虑系统环境问题,因为,在虚拟机中,我和妹子的环境是一致的。
弊:
除了先要装一个vmware之外,真心想不出来还有什么不好的。要求机器配置不要太低,但是测试妹子的内存足足有8GB。运行虚拟机那是绝对没有问题滴。
---------------------------------------华丽的分割线-------------------------------------------------
步骤1、没说的,安装vmware。windows和ubuntu安装vmware都挺简单,不会请自行百度。这里就提一句,vmware是一款收费软件,最新的vmware是收费的。但是如果你不追求最新版,网上有好多vmware 10,vmware 9。
步骤2、在虚拟机中安装系统
这里我选用的是windows xp,第一,因为它是windows系统,所以基本上人人都会使用。第二,系统镜像不大,可以在神不知鬼不觉的情况下,在单位下载完,而不用感受同事们的怒火。
步骤3、在虚拟机中配置环境,我这里用的是python2.7, selenium。很简单滴,
只需要在python网站上下载最新的python2.7就行啦,(解压,.configure,编译,安装,设置环境变量)然后安装setuptools(解压, 编译,安装, 设置环境变量)。
easy_install pip。
pip install -U selenium。
步骤4、编写测试代码,我这里使用Chrome做示例。
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keysoa = open('log')
content = oa.read()
if '\r\n' in content:contents = content.split('\r\n')
elif '\r' in content:contents = content.split('\r')
elif '\n' in content:contents = content.split('\n')acount_dict = {t.split(':')[0]: t.split(':')[1] for t in contents}oa.close()def test(test_name, acount):print test_namedriver = webdriver.Chrome()driver.get('http://my.huangye88.net/login.html')e1 = driver.find_element_by_id("user_name")e2 = driver.find_element_by_id("user_password")e3 = driver.find_elements_by_xpath('//input[@class="orangebtn"]')[0]e1.send_keys(acount.split('\t')[0])e2.send_keys(acount.split('\t')[1])e3.click()if driver.title == u'【黄页88网登录】-黄页88网':print u'登陆成功'else:print u'登陆失败'driver.quit()for k, v in acount_dict.items():test(k, v)
这里主要是测试网站登录的。log是保存网站的账号和密码的文件。
这时候,虚拟机的环境和python脚本一切都已经搞定了,现在该到了移植的环节啦。
步骤5、移植
找到你虚拟机xp系统文件在本机中保存的路径,我的路径是这里
所以我把这个文件夹放在从同事哪里借来的u盘里面,拷到测试妹妹的计算机里面。
马上跑到测试妹妹那里,打开测试妹妹的虚拟机,点击文件,选择“打开”
在对话框里面找到你刚刚拷贝的虚拟机系统文件。点击.vmx文件。
接下来就一切跟着提示走就OK了,不一会就看见xp系统运行起来了,在运行你刚刚写好的测试脚本。发现也完美的运行起来了。
以上。
更多内容请订阅我的公众号