之前一篇博客已经讲述怎样手动使用 appium-desktop启动测试机上的app ,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 + Python37 + appium1180 + Android手机 + 今日头条app + Pycharm
具体的获取方法请参考 APP自动化测试之appium连接真机启动app ,配置信息如下:
appium在本机开启的话则IP为127001,端口默认为4723
我们会看到手机上今日头条app被打开。
我们查看手机,会发现手机正在自动做登录今日头条的app *** 作,且登录成功。
至此,我们通过编写一个简单的Python脚本完成了登录app的 *** 作,如果加上断言,就是一条完整的用例。
adb devices获取设备名
adb -s 设备名 tcpip:端口号,比如adb -s devicename tcpip:5555,这样写可以解决连接不到设备的问题
adb connect ip:端口号,比如adb connect 19216801:5555
然后就可以看到设备连接成功了
往指定的手机安装app
adb -s 19216801:5555 install xxxapk
目前的解决办法:以华为手机为例,打开设置,找到启动管理(有的在应用和通知中,有的在电池中)把ioappiumuiautomator2server 和ioappiumuiautomator2servertest 等与appium相关的程序,自动管理改成手动管理
如果运行一段时间再出现问题,就看一下电池配置,位置在 设置 -> 电池 -> 后台高耗电, 把 appium 相关的app都加上,允许其在后台高耗电时继续运行,然后再运行appium 自动化测试
from appiumwebdriverextensionsandroidnativekey import AndroidKey
应用的搜索功能,搜索键在软键盘上的。使用Enter键来代替搜索键。
Enter键 : keyevent:66
Back键:4
Home键:3
按键 *** 作:
driverpress_keycode(AndroidKeyENTER)
启动参数当中关于输入法:
unicodeKeyboard=True
输入法的 *** 作(输入中文时):
1、获取当前设备可用的输入法:
driveravailable_ime_engines
2、获取当前正在使用的输入法:
driveractive_ime_engine
3、切换为其它输入法:
driveractivate_ime_engine(输入法名,可以从1中获取到)
4、输入完成,想要收起键盘:
driverhide_keyboard()
5、键盘是否显示:
driveris_keyboard_shown()
输入法切换的场景:
1、用send_keys输入中文,但是在app的页面当中,并没有显示出输入的内容。
需要切换到,中文输入法。
参考官方描述,需要打开Springboard,且确保 WDA 可见,以此打开 WDA,然后调用获取剪贴板的接口,最后再返回原来的待测APP:
例子:
selfdriveractivate_app('comapplespringboard')
selfdriverfind_element_by_accessibility_id('WebDriverAgentRunner-Runner')click()
pasteboard_text =selfdriverget_clipboard_text()
selfdriveractivate_app(bundle_id_of_app_to_test) # 此处参数为待测APP的bundleid
1Command 'E\:\\Development\\Android\\SDK\\platform-tools\\adbexe -P 5037 -s 127001\:62001 shell getprop robuildversionrelease' exited with code 3221226356'; Stderr: ''; Code: '3221226356
原因:adb版本问题,在cmd执行adb version命令发现adb的版本为2900-XXXX
解决方法:升级adb版本,可通过Android studio>tools>sdk manager>Appearance&Behavior > System Setting >Android SDK>SDK tools升级Android SDK Platform-Tools 到2902,adb版本即升级成功,问题解决
2页面从首页切换到第二个页面后,无法定位元素,使用selfdriverpage_source方法获取页面信息无反应。使用XPATH="//"查找元素。发现得到的元素是首页的元素
原因:Android 70切换Activity的bug,需要使用UiAutomator2测试
解决方法:selfdesired_caps['automationName'] ='UiAutomator2'
3切换UiAutomator2后,adbexe -P 5037 -s 1d6f926c shell pm install /data/local/tmp/appium_cache/56abf1bf10f6562619a2dd8fb060718e27c4cb28apk命令执行失败
原因:手动在cmd执行命令,返回Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install ioappiumuiautomator2server without first uninstalling],但实际上手机上找不到该apk。使用adb shell pm list packages 发现package: ioappiumuiautomator2server
解决方法:手动执行adb uninstall package: ioappiumuiautomator2server卸载
1查看iso设备udid:
终端输入: idevice_id -l
2查看应用的bundleID:
安装ideviceinstaller
终端输入: brew install ideviceinstaller
ideviceinstaller -l
uiautomator和appium都作为移动端自动化测试的工具那么他们有什么区别呢
1适用场景不同
uiautomator适用于adroid手机端自动化测试而appium不仅适用于Android手机,同样适用于ios手机
2作用域不同
在Android系统场景中,uiautomator可跨app,在手机ROM层面实现交互而appium只适合在应用内部,不能跨app
而且appium可以实现webview界面的自动化测试,而uiautomator却不能
3原理
appium是通过webDriver调起应用,以appium server作为桥梁,通过Bootstrapjar调用的android端uiautomator命令和ios端uiautomation/XCTest(ios 8以上)
uiautomator通过android instrumentation获取系统上下文,设备信息状态等
以上就是关于appium + python编写自动化脚本全部的内容,包括:appium + python编写自动化脚本、Appium wifi连接真机并发运行脚本遇到的坑、appium-按键 *** 作(AndroidKey)+输入法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)