一:APP自动化测试框架比较
跨应用:比如在测试抖音的同时还想测试微信
Hybrid:混合应用程序
二:Appium自动化测试框架
官网:http://appium.io/
优点:
1:跨架构、支持原生、混合以及web移动应用
2:跨平台,Android&IOS
3:跨语言,Java、Python、Ruby
下载安装:
这里我是通过翻qiang下载的
安装后打开就是这玩意
当然下载了这个还不行,还要去配置JDK,eclipse,模拟器,Android SDK(我直接用android studio)
这里可能会存在夜神内置的adb和SDK的adb冲突,可以把SDK的adb替换到夜神中(我没弄这个)
复制SDK里面的,改名字成这个,然后黏贴进去
Appium Client下载:https://github.com/appium/java-client
三:Appium组件
Appium Server:实际上是一个web接口服务器,使用node.js实现
Appium GUI:Appium Desktop的前身,目前已经停止维护,封装的Appium Server是1.4.16(不推荐使用)
Appium Desktop:内嵌Appium Server,提供了GUI界面(就是我上面下载那个,它集成了node.js,所以不用安装node.js)
Appium Client:客户端向Appium Server发起请求,可以使用不同语言实现,如Java
四:基本配置
简单了解一下
simple配置(简单)
advanced配置(高级)
presets(预置配置)
我这配置一个
这里对安卓测试
运行,因为appium是工作在本地下的,所以为127.0.0.1,默认监听端口默认就行
最后一行说明appium工作已经开启
五:开启探测会话
这是启动测试app要的一些信息,appium主要用来探测app的元素信息
我这用的是夜神模拟器
deviceName 127.0.0.1:62001
所以这样填,用来找到测试的设备
确认测试的平台,比如安卓或者IOS
platformName Android
确定测试的app,也就是包
怎么查询?可以通过这种方式,进入sdk里面,路径(我的是Android studio):E:\android-studio-bundle-145.3276617-windows\sdk\build-tools\24.0.2
选中上面的地址,输入cmd
输入这些内容后,比如我是要测试抖音,找到apk拉进去就行了,它会帮你填充apk的路径,回车
这个就是包名字(其实也可以通过之前adb那种方式去查)
appPackage com.ss.android.ugc.aweme
启动应用程序,要加这个app的入口,在上面那里也可以找到,不过我看抖音的时候没看到
像微信可以看到
也可以用这种方式,模拟器启动这个app,命令行输入adb shell dumpsys window w | findstr \/ | findstr name=(方法很多,可以去百度看看)
appActivity com.ss.android.ugc.aweme.splash.SplashActivity
看一下,没问题就保存,下次就不用再次输入
这里可以看到
然后报错了,大概的意思是说环境变量有问题
看了下日志:
因为我这是使用android studio的sdk,之前在配置adb的时候也弄了这个
E:\android-studio-bundle-145.3276617-windows\sdk\platform-tools
在这里要重新改造一下
在系统变量新增一个环境变量,就是要这个名字,让appium能识别(如果java识别不了,也可以改成JAVA_HOME这个名字)
在path加上这两个
%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
在这里我怕adb不行了,测试一下有没有问题,发现没问题
重启一下appium,发现识别成功
回到之前运行,发现又报错了
看日志出现这个
error: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
Trying to proxy a session command without session id
Could not find 'apksigner.jar'
安装这个后,我发现这个问题没了:Could not find 'apksigner.jar'
于是我看最新的日志
[2020-06-17 03:18:09][ADB] Install command stdout: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
[2020-06-17 03:18:09][ADB] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
[2020-06-17 03:18:09][UiAutomator2] Did not get confirmation UiAutomator2 deleteSession worked; Error was: UnknownError: An unknown server-side error occurred while processing the command. Original error: Trying to proxy a session command without session id
[2020-06-17 03:18:09][ADB] Running 'E:\android-studio-bundle-145.3276617-windows\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am force-stop com.tencent.mm'
Encountered internal error running command: Error: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
[2020-06-17 03:18:10][MJSONWP] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
想了一下,跑去试试是不是SDK的问题,于是我更新了这两个
后面发现同样的问题还是存在,于是我查了很久,忽然想到我这个appium软件是最新版本的,于是我想是不是有变动
于是我就这个方向去查(太难了,英文不过关的我),终于被我查到了问题
我夜神模拟器的安卓版本是5.1.1,一般是使用UIAutomator1的,比较新的一些安卓系统可能使用的是UIAutomator2,我想是不是1.7以后版本的appium默认是使用了UIAutomator2,于是我加了这个配置
automationName UiAutomator1
然后运行,发现报错不一样了,现在是报这个错误
Encountered internal error running command: Error: Could not find package com.tencent.mm on the device
百度翻译了一下,应该是我微信的包没有安装到模拟器上,可以直接拉包进模拟器,就能安装了
但不知道为毛,我的微信安装不了,于是我用adb命令安装,也安装不了
于是算了,装了个抖音去试试,运行是没问题的了(能调起抖音app来运行)
看了一下日志也没问题
附加:在踩坑过程中也用了这些去查看,当然也不知道有没有前置作用
(1)安装appium-doctor
它是用来检测环境的,使用 npm --registry http://registry.npm.taobao.org install appium-doctor -g
看着好像没问题
(2)Python库安装
pip install appium-python-client
验证一下
也可以直接在pycharm工具里面输入from app(这时候有提示,说明安装成功)