文档章节

我是怎样帮助漂亮的测试妹妹实现自动化的(小记)

爬虫张小呆
 爬虫张小呆
发布于 2017/05/23 13:42
字数 2057
阅读 124
收藏 0

一天,我们的产品经理“乔哥”跟我说:现在你学习的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 Keys

oa = 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_name
    driver = 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系统运行起来了,在运行你刚刚写好的测试脚本。发现也完美的运行起来了。

以上。

更多内容请订阅我的公众号

© 著作权归作者所有

共有 人打赏支持
爬虫张小呆
粉丝 1
博文 21
码字总数 13945
作品 0
用C#.NET 与Webdriver写的抓取网页信息的小工具

最近,女友的妹妹要去网上找房产中介人信息用于招聘,自己去网上一个一个找太慢,我女友知道我是搞IT的就请教我有没有办法帮她快速找电话号码,于是我就想到了爬虫程序,然后普通的爬虫代码有...

郑树恒
2015/09/29
1K
7
【自动化测试框架】 | 基于 selenium+Python,怎样从零开始搭建一个属于自己项目的测试框架

本框架是别人项目正在使用的框架,我这边抓取后经过了一点优化后整理出来的,大致包括,自动化用例套件、数据分离、日志模板、配置分离、断言、接口自动化、持续集成、自动化报告等方面,已经...

西边人
06/15
0
0
自动化测试入门教程(Maven + TestNG + Selenium)

说明 随着项目后期的业务趋于稳定之后,传统的手工方式进行回归测试消耗太多的人力资源,那就要思考如何利用计算机帮助我们达到自动化测试的目的了;编写此篇文档的主要目的是为了针对项目组...

littlebrain4solving
2017/09/13
0
0
PHP自动测试框架Top 10

对于很多PHP开发新手来说,测试自己编写的代码是一个非常棘手的问题。如果出现问题,他们将不知道下一步该怎么做。花费很长的时间调试PHP代码是一个非常不明智的选择,最好的方法就是在编写应...

Miss_Hello_World
2016/01/22
372
0
做自动化测试之前需要了解的

首先理清自动化测试的概念,什么是自动化测试? 广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做是自动化,包括性能测试工具(Loadrunner、Jmeter),...

itzhongxin
2017/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
28分钟前
2
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
35分钟前
1
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
45分钟前
17
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部