appium操作app

280 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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服务。

image-20220720170622680.png

保存页面信息

image-20220720171326572.png

加载保存的页面信息

image-20220720171518096.png