携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详
Python和appium客户端简单操作手机案例
import time
from appium import webdriver
# 初始化app的配置信息,是一个字典
des_cap = {
"platformName": "android", # 操作系统
"platformVersion": "5.1.1", # 操作系统版本
"deviceName": "****", # 如果只连接一个设备,可以使用****代替,如果有多个设备需要写设备ID
"appPackage": "com.android.settings", # app的包名
"appActivity": ".Settings" # 表示app的界面名
}
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=des_cap) # appium服务(有默认值参考源代码) app配置信息
time.sleep(4)
driver.quit() # 退出
代码操作 - 启动app和关闭app和驱动
# 在启动了设置之后再,通过app包名和启动名启动app
driver.start_activity(app_package="com.bjcsxq.chat.carfriend", app_activity=".module_main.activity.MainActivity")
driver.close() # 关闭当前app,还可以再打开其他app
driver.quit() # 退出驱动。和appium服务的断开,就无法再对app进行操作了
代码操作 - 获取包名和界面名
# 获取当前脚本运行中的app包名和界面名
current_package = driver.current_package
current_activity = driver.current_activity
代码操作 - app卸载和安装
# 安装app
driver.install_app(app_path=r'C:\Users\12801\Desktop\UI自动化工具\app自动化工具集合\apk\zuoyebang.apk')
# 卸载app
driver.remove_app(app_id='com.baidu.homework')
# 判断手机是否安装了某个app
is_installed = driver.is_app_installed(bundle_id='com.baidu.homework')
代码操作 - 将应用放在后台运行
# 将app放在后台运行多少s,过了几秒之后,又会回到前端
driver.background_app(seconds=4)
uiautomatorviewer获取app元素信息
在命令行中直接输入uiautomatorviewer
即可打开,但是命令较长,可以将该文件(\android-sdk\tools
下)复制一份,然后改一个简单的名字(uiauto)即可。
该工具automator可以帮助查找app上的元素信息。
打开app之后就可以将页面加载到工具中,然后可以看到元素信息.
需要注意的是在代码对app进行操作时,automator工具会和代码产生冲突,无法获取元素信息,解决方式是,可以将页面信息先保存起来。一个界面会保存两个文件,一个是图片,一个是元素文件。这样在编写代码时,可以直接通过本地文件而无需占用app来查找元素信息。即先保存界面再写代码。
当代码和automator工具之间产生错误之后,automator会报错,此时需要重新启动adb服务。
保存页面信息
加载保存的页面信息