移动端自动化测试踩坑日记

首先就是选择工具使用python语言和uiautomator,然后就是各种环境配置各种遇见错误,容我一一举例吧

1安装python pip 

2.安装uiautomator2,命令 pip install --pre -U uiautomator2

3/接下来就是集成开发工具py cha r m,创建项目 新建python,导入uiautomator2,这里我遇到的问题是怎么都导入不了,总是提示没有这个模块,最后的解决办法也只是重新安装py cha r m,社区版pycharm-community-2018.dmg,新建项目的时候如下图,如此发现导入uiautomator2成功了

移动端自动化测试踩坑日记_第1张图片

移动端自动化测试踩坑日记_第2张图片

4这个时候就开始要获取元素准备开始写脚本了,选用的工具是uiautomatorviewer,但是可怜的我总是会遇到很多问题,点击sdk下的uiautomatorviewer报错,提示这个dirname :not fund 反正是各种not fund,原因是什么呢,就是我的path变量有问题,Mac的path变量结尾应该是$PATH,我就只能把这个错的path变量直接删掉了,因为也确实没用,要是有用修改为正确也可以吧

uiautomatorviewer 启动的问题解决 了,但是启动后获取元素的时候麻烦又来了,提示Unable to connect to adb,移动端自动化测试踩坑日记_第3张图片

百度后找到解决方法了:打开uiautomatorviewer.bat,找到uiautomatorviewer.bat文件最后一行:

exec "${javaCmd}" $javaOpts -Djava.ext.dirs="$frameworkdir" -Dcom.android.uiautomator.bindir="$progdir" -jar "$jarpath" "$@"

将其中的binddir=%prog_dir%修改为SDK的platform-tools所在路径。

修改后的最后一行为:exec "${javaCmd}" $javaOpts -Djava.ext.dirs="$frameworkdir" -Dcom.android.uiautomator.bindir="/Users/****/sdk/platform-tools" -jar "$jarpath" "$@"

到这里还不算完事:

再次获取元素的时候还是报错:uiautomatorviewer Error obtaining UI hierarchy

移动端自动化测试踩坑日记_第4张图片

百度一番好多方法,终于找到一个超级好使的法子,粗暴又万能的重启手机,再次获取元素的时候,问题就这么好了

UI automator viewer 查看path路径请参考:https://www.jianshu.com/p/14db2af600fb

 

 

5. 接下来就是安装appium了,安装步骤和方法就看这个链接吧https://testerhome.com/topics/1225

我曾经一度疑惑一点为什么要用到appium 后来才明白,详细两件见https://blog.csdn.net/jffhy2017/article/details/69220719/

我的理解其实这就是脚本,appium ,strap,设备四者直接的关系,首先appium启动就会一个服务端也是一个中转站,appium会向设备仍一个包appiumbootstrap.jar,这个包会在设备上新建一个socket服务打开4724端口,接下来 脚本向appium发送指令,appium根据脚本指令利用strap新建的4724端口利用strap操作设备,如滑动点击等,然后strap将响应返回给appium,appium再将去响应脚本

 

 使用真机或夜神模拟器,adb devices 找不到夜神模拟器解决方法:https://blog.csdn.net/cz9025/article/details/78665223

 

6   以为什么都准备好可以开始写脚本了吧,问题来了,写脚本当然开始了,首先我需要获取测试app的包名和当前的activity,我执行的 adb 命令是

adb shell dumpsys window | findstr mCurrentFocus

但是一直提示我-bash: findstr: command not found

原因是我用的Mac这个这个命令是window下的,需要改下命令为adb shell dumpsys window | grep mCurrentFocus

 真是无处不坑啊

 

7,脚本的第一步就是启动app,很多教程上会有这么一句

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

切记不可照搬,需要将localhost改为127.0.0.1

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

8,启动获取app元素的weditor. :python -mweditor

9,python脚本运行报错:

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

解决方案:添加以下代码

import sys

reload(sys)

sys.setdefaultencoding('utf8')

10,weditor和uiautomatorviewer 均无法定位到H5页面元素

 解决方案:

1,电脑和手机里都要安装谷歌浏览器,2,能,为此我特意花钱买了一个VPN,3,如果是公司内的app,需要开发人员在app的activity清单文件里面添加android:exported="true",如此打出来的包才能抓取到H5页面元素,但是如果是微信公众号一类的H5页面就简单了,在一个对话框李输入debugx5.qq.com,点击打开进入信息下如下图

移动端自动化测试踩坑日记_第5张图片

到此设置完毕后回到谷歌浏览器

4,谷歌浏览器输入chrome://inspect/#devices,如图操作,

移动端自动化测试踩坑日记_第6张图片

如果没有的话,点击完inspect就会是空白页如下图

移动端自动化测试踩坑日记_第7张图片

但是要是有了就是下图了

 

11,启动appium 服务,点击运行脚本,提示[UiAutomator] UiAutomator exited unexpectedly with code 255, signal null

解决方案:重启手机即可

学习中的我遇到问题会及时更新和大家分享哦~~~

 

你可能感兴趣的:(移动端自动化测试踩坑日记)