1. 使用uiautomatorviewer,需要关闭appium,不然无法定位到元素
2. 代码中启动app后,休眠几秒,等待页面加载完成后再进行操作
3. name定位就是通过UI Automator工具查看的text属性
appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了
解决方法:
在C:\Users\yx\AppData\Roaming\npm\node_modules\appium\node_modules\appium-android-driver\build\lib\driver.js文件中,把this.locatorStrategies = ['xpath', 'id',
'class name', 'accessibility id', '-android uiautomator'];修改为this.locatorStrategies = ['xpath', 'id', 'class name', 'accessibility id', '-android uiautomator','name'];
4. app分为原生应用、web应用、混合应用
这时候可以查看元素属性,它的class属性,上面写着WebView,那毫无疑问这种页面就是web应用了
利用appium测试web应用,uiautomatorviewer无法元素识别,定位基本依赖于xpath识别方式
解决方法:
关闭uiautomatorviewer
在cmd中运行:adb shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e disableAndroidWatchers false
启动uiautomatorviewer
5. 真机首次打开app有的手机会出现权限弹窗问题,模拟器是不会有这种权限弹窗的
6. 输出日志到手机:adb logcat -f /sdcard/yx/yx.txt
输出日志到电脑:adb logcat > d:yx\yx.txt adb logcat | find "com.meitua.sd" > d:yx\yx.txt
7. 测试脚本字典参数
(1). automationName:指定自动化测试引擎,可以是Appium (默认) 或 Selendroid。如果是较新的Android版本,如6.0以上,则必须明确指定automationName=
‘uiautomator2’
(2). platformName:指定要测试的手机操作系统,如:iOS,Android或FirefoxOS
(3). platformVersion:移动操作系统版本,如4.4.2
(4). deviceName:使用的手机类型或模拟器类型。在iOS中,必须使用“instruments -s devices”命令得到的设备编号
(5). app:指定待测试应用程序
(6). browserName:如果是针对手机上的浏览器应用进行测试,需要指定其浏览器名称。在iOS上可用“Safari”,在Android上可指定“Chrome”,“Chromium”或“Browser”
(7). newCommandTimeout:设置命令超时时间,单位:秒。达到超时时间仍未接收到新的命令时Appium 会假设客户端退出然后自动结束会话
(8). autoLaunch:Appium是否需要自动安装和启动应用,默认值为true
(9). udid:连接的移动设备的唯一设备标识
(10). autoWebview:直接转换到 WebView 上下文。 默认值为false
(11). noReset:不要在会话前重置应用状态,默认为false
(12). fullReset:在会话结束后自动清除被测应用,默认为false
(13). appActivity:应用包中启动的 Android Activity 主类名称。它通常需要在前面添加“.”
(14). appPackage:想运行的Android应用程序的主包名
(15). deviceReadyTimeout:设置等待一个模拟器或真机准备就绪的超时时间
(16). unicodeKeyboard:设置使用Unicode输入法,这样才能支持中文输入
(17). resetKeyboard:在使用了unicodeKeyboard参数后,对其进行重置,还原为默认设置