robot 实现自动化 webUI 自动化

目前项目有这样 webUI 自动化这样一个需求,考虑到自己技术和精力有限,以及时间比较赶,所以做出一个简单的 webUI 自动化框架,目前用起来效果还可以,欢迎大家吐槽。。。

为什么做

做成啥样

装些什么东西

序号 安装包名 安装方法 下载地址 备注
1 python exe 文件,直接双击安装 https://www.python.org/download/releases/2.7.8/ 安装路径不能有空格,在环境变量 PATH 中加上 Python 安装路径
2 setuptools 下载 ez_setup.py 文件,双击 https://pypi.python.org/pypi/setuptools Python 的套件管理程式,非必需,可以不装
3 pip 1.cmd 进入 ez_setup.py 文件目录
2.用 setuptools 安装:easy_install pip
https://pip.pypa.io/en/latest/index.html Python 的套件管理程式,在 PATH 最后添加 Python 的 Scripts 目录
4 robot framework pip install robotframework https://pypi.python.org/pypi/robotframework robot framework 本身
5 wxPython exe 文件,直接双击安装 http://wxpython.org/download.php#stable 支撑 Ride 的运行库,需要安装 2.8 的
6 robotframework-ride pip install robotframework-ride https://pypi.python.org/pypi/robotframework-ride Ride
7 selenium2library pip install robotframework-selenium2library https://pypi.python.org/pypi/robotframework-selenium2library selenium2 测试库,基于 webdriver 驱动
8 databaselibrary pip install robotframework-databaselibrary https://github.com/franz-see/Robotframework-Database-Library DB 库
9 requests pip install requests https://pypi.python.org/pypi/requests RequestsLibrary 库
10 RequestsLibrary pip install -U robotframework-requests https://github.com/bulkan/robotframework-requests http request 库
11 pyodbc pip install pyodbc https://pypi.python.org/pypi/pyodbc python 的 odbc,解决中文乱码
12 MySQL Connector exe 文件,直接双击安装 http://www.mysql.com/downloads/connector/odbc/ Mysql 的驱动,可以不安装

项目的结构

结构

用例怎么写的

  1. 在 page 文件夹添加相应的页面文件登录页.csv
  2. 添加需要测试用到的控件,username_ipt,id,userName,用户名等等
  3. 在 suite 目录添加相应的 suite 文件运营平台.txt
  4. 添加测试用例登录到运营平台并导入keyword中相应的资源文件
  5. 开始写具体的用例了 登录到运营平台 ${configs} 读取多个配置 url=platform url=admin 打开浏览器 ${configs[0]} 清空元素文本 登录页 username_ipt 输入文本 登录页 username_ipt ${username} 清空元素文本 登录页 password_ipt 输入密码 登录页 password_ipt ${password} 点击按钮 登录页 submit_btn 检查元素是否包含文本 账户平台首页 username_link ${username}

怎么跑的

每次手动执行 robot 比较麻烦,利用 jenkins 每次从 git 上拉取最新的测试用例,保证项目的持续集成以及自动回归

#!/usr/bin/env bash
ROOT=$(cd `dirname $0`; pwd)
TIME=$(date +%Y-%m-%d_%H_%M_%S)

function if_error
{
    if [ $1 -ne 0 ]
    then
        echo -e "\033[31mfailed!error code:$1\033[0m"
        exit $1
    else
        echo -e "\033[32msuccess!\033[0m"
    fi
}
function error
{
    echo -e "\033[31m$@\033[0m"
    exit 1
}
function success
{
    echo -e "\033[32m$@\033[0m"
}
function dump
{
    echo -e "\033[44m$1\033[0m"
}

dump "check connect..."
ping -c4 XX.XX.XX.XXX #服务器IP
if_error $?

dump "start run test..."
pybot -d report/$TIME $ROOT/suite

dump "start generate html report..."
if [ ! -d $ROOT/report/$TIME ];then
    dump "not found report dir!"
    exit -1
fi

python genLog.py report/$TIME/output.xml demo.html report/email.html
if_error $?


↙↙↙阅读原文可查看相关链接,并与作者交流