环境介绍
服务器235:存放测试脚本,常改动和增加
服务器204:存放系统架构脚本,不常改动
服务器238:执行机,拥有所有环境和脚本,连接手机,可执行测试任务
手机设备:用于执行测试任务
本机电脑secureCRT:连接执行机,用于调试执行各种操作
自动化测试环境搭建就是指在执行机上搭建测试环境,让其最终可以正常执行任务的前置过程
软件安装 名称
版本号
前置依赖
CentOS
7.4.1708
无
pyenv
1.1.5
无
Python
2.7.14
pyenv
OpenCV
3.3.0
无
opencv-python
3.3.0.10
python、opencv
JDK
8u144
无
Android SDK platform-tools
26.0.1
JDK
nvm
0.33.5
无
Node.js
6.7.14(LTS)
nvm
Appium
1.7.1
Node.js、JDK
环境部署过程
1、安装自动化测试环境中三大核心工具
①python:脚本语言,用于组织整个自动化测试环境系统及测试脚本
②opencv:图像识别,得到坐标,可以进行点击等操作
③appium:用于执行机连接手机后识别手机应用的控件元素
安装过程分两步走
第一步安装python、opencv、appium软件,通过python、opencv_version、appium -v命令确定安装成功
第二步安装python与opencv/appium的连接模块,通过命令pip install XXX完成,具体如下:
opencv:pip install opencv-python
appium:pip intall appium-python-client
最后在python环境中确认是否可以正常导入模块
[root@localhost ~]# python
import cv2
import appium
2、安装自动化测试环境中其他辅助模块(根据脚本使用模块情况)
pip install pymysql:连接数据库
pip install pillow imagehash:图像处理
pip install requests:如请求某个url,传输参数,最后得到返回的结果
chmod 777 aapt:aapt命令是android SDK 中的一个工具,可用于解析apk包
这边因为安装的sdk中找不到aapt工具,所以自己下载一个aapt文件后赋予读写执行权限后就可以了
参考网址:http://www.cnblogs.com/miao-zp/p/5983878.html
3、解决python脚本import模块时的搜索路径问题
(1)模块分类
标准库的模块:配置python的环境变量,然后就可以直接import了
自己写的模块:只要放在搜索路径里都可以直接import
(2)搜索路径及顺序
①当前目录
②shell变量PYTHONPATH下的每个目录
③默认路径,UNIX下,默认路径一般为/usr/local/lib/python/
模块搜索路径存储在system模块的sys.path变量中,包含以上三种
(3)添加自定义搜索路径(以/home/work/yuntest/python为例)
查看sys.path
[''......, '/root/.pyenv/versions/2.7.14/lib/python2.7/site-packages']
进入目录
cd /root/.pyenv/versions/2.7.14/lib/python2.7/site-packages
创建文件
touch mypath.pth
编辑文件
vi mypath.pth
编辑内容
/home/work/yuntest/python
查看sys.path
['',...... '/root/.pyenv/versions/2.7.14/lib/python2.7/site-packages', '/home/work/yuntest/python']
4、挂载资源到执行机,准备好环境,试运行脚本
(1)创建相关文件夹
创建apks、python、task、before_install_pic等等(如果你的脚本中设置了某些文件夹存储资源,记得提前创建好该文件夹,否则执行报错)
(2)挂载相关脚本文件到执行机上面
(脚本文件之所以放其他服务器是为了管理方便而已,详细看最上面的环境介绍)
[root@localhost yuntest]# mount -t cifs -o username=xxx,password=xxx //192.168.1.xxx/ntfs3/python /home/work/yuntest/python
[root@localhost yuntest]# df -h(查看是否挂载成功)
//192.168.1.xxx/ntfs3/python 391G 341G 50G 88% /home/work/yuntest/python
(3)最后试运行脚本成功,环境搭建完成
附——我遇到的坑坑
1、截图时报错:cannot write mode RGBA as JPEG
原因:执行img.save(outfile,"JPEG")时,我截了一个png格式的图,然后经过各种转换后要保存成JPEG时报错
解决:在保存成JPEG前先转换成RGB格式(img=img.convert('RGB'))
2、find_elements_by_name()方法报错
据说这方法被弃用了,appium1.5和1.7版本就不支持,网上找了些方法处理(如下),图个方便我就直接改webdriver.py里对应的方法就行啦
处理方法:
①使用driver.find_elements_by_android_uiautomator("text(\"中文\")")可代替
②使用driver.find_elements_by_xpath("//*[@text='退出']")可代替。
③重写webdriver.py里的by_name方法,使用以下方法替代
xpath="//[@name='"+name+"']"
#print(xpath)
a=self.find_elements(by=By.XPATH, value=xpath)
if len(a)>0:
return a
xpath="//[@text='"+name+"']"
a=self.find_elements(by=By.XPATH, value=xpath)
if len(a)>0:
return a
return ""
备注:webdriver.py位置/root/.pyenv/versions/2.7.14/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py(看你报错提示就知道了)
3、securecrt连接到执行机,试运行脚本时中文显示乱码
原因:默认设置下,通过SecureCRT连接SSH服务器可能出现中文乱码的情况,这是由于SecureCRT字符编码与服务器的字符编码不一致造成的
解决:(前提是该Linux系统中默认的字符编码为UTF8)
选项——会话选项——外观——窗口和文本外观——字符编码——设置为UTF-8,点击确定