appium + python编写自动化脚本

appium + python编写自动化脚本,第1张

之前一篇博客已经讲述怎样手动使用 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)+输入法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9270721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存