服务器 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 |
软件的安装排坑过程请参考网址(这教程赞一个)
https://oxygenengine.github.io/%E6%8A%80%E6%9C%AF/2017/10/18/install-auto-test-environment-on-centos-7/
①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
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
标准库的模块:配置 python 的环境变量,然后就可以直接 import 了
自己写的模块:只要放在搜索路径里都可以直接 import
①当前目录
②shell 变量 PYTHONPATH 下的每个目录
③默认路径,UNIX 下,默认路径一般为/usr/local/lib/python/
模块搜索路径存储在 system 模块的 sys.path 变量中,包含以上三种
查看 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']
创建 apks、python、task、before_install_pic 等等(如果你的脚本中设置了某些文件夹存储资源,记得提前创建好该文件夹,否则执行报错)
(脚本文件之所以放其他服务器是为了管理方便而已,详细看最上面的环境介绍)
[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
原因:执行 img.save(outfile,"JPEG") 时,我截了一个 png 格式的图,然后经过各种转换后要保存成 JPEG 时报错
解决:在保存成 JPEG 前先转换成 RGB 格式(img=img.convert('RGB'))
据说这方法被弃用了,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(看你报错提示就知道了)
原因:默认设置下,通过 SecureCRT 连接 SSH 服务器可能出现中文乱码的情况,这是由于 SecureCRT 字符编码与服务器的字符编码不一致造成的
解决:(前提是该 Linux 系统中默认的字符编码为 UTF8)
选项——会话选项——外观——窗口和文本外观——字符编码——设置为 UTF-8,点击确定