android安装python opencv_安卓自动化测试环境搭建 (CentOS+Python+Appium 篇)

环境介绍

服务器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,点击确定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值