文档章节

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

爬虫张小呆
 爬虫张小呆
发布于 2017/05/23 13:42
字数 2057
阅读 119
收藏 0
点赞 0
评论 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
跳舞的妹妹(Tiny Dancer)

晚上回家。在街上走,夜风吹拂。 手中的MP3 Player,正好放到Elton John的《Tiny Dancer》。这是我喜欢的歌,最早是从电影《Almost Famous》里知道的。 听到下面这段歌词时,不禁心潮起伏。跟...

阮一峰
2006/04/09
0
0
从妹控的兴起看8对不可错过的兄妹CP

昨天轻文上一个连载的妹控轻小说《我的妹妹怎么可能是问题少女》出版了,出于对妹控这个现象的兴起,我们还是可以去玩味的。 笔者从小没有妹妹,也并没有什么堂妹表妹的,所以妹控这种东西,...

空之国
2017/02/23
0
0
【自动化测试框架】 | 基于 selenium+Python,怎样从零开始搭建一个属于自己项目的测试框架

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

西边人
06/15
0
0
她把一个“三无”产品做进故宫,还一举颠覆了蛋糕界,厉害了我的仙女姐姐

2016-12-01 不可辜负的 GirlUp 唯爱与美食, 不可辜负。 ··· “三无”蛋糕 一块“三无”蛋糕。 竟成了第一个, 走进故宫的蛋糕品牌。 一时间, “蛋糕界”炸开了锅。 人们纷纷猜测, 到底...

Betty__
2016/12/02
32
0
我怀念的

图片发自简书App 自从你把一打明信片和信纸塞我课本里面,我就觉得,整个班的女同学都喜欢我了。我现在仍清楚的记得,我当众把你的明信片撕掉,让我尴尬的是,带胶纸的明信片老是撕不碎,我都...

天方月圆
2017/11/28
0
0
自动化测试入门教程(Maven + TestNG + Selenium)

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

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

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

Miss_Hello_World
2016/01/22
372
0
一个遗留系统自动化测试的七年之痒

本文作者:伯乐在线 -ThoughtWorks 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 背景 项目从2009年开始启动,采用的是TDD开发方式。在这之后的过程中,团队做过各种尝试去调整自...

伯乐在线
2016/07/22
0
0
做自动化测试之前需要了解的

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

itzhongxin
2017/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部