Appium详解

发布时间 2023-04-27 23:59:50作者: 璀璨如歌

Appium基础操作API

前置代码

#导入模块
from appium import webdriver
#创建字典,包装相应的启动参数
desired_capabilities=dict()
#定义Key-Values值
#平台名,无视大小写
desired_capabilities["platformName"]="Android"
#平台版本
desired_capabilities["platformVersion"]="7.1.2"
#设备名,随便写,但是不能乱写
desired_capabilities["deviceName"]="127.0.0.1:62001"
#在 Android 设备上查找当前正在运行的应用程序
# adb shell dumpsys window windows | grep mFocusedApp
#要打开的应用程序
desired_capabilities["appPackage"]="com.amaze.filemanager"
#要打开的界面
desired_capabilities["appActivity"]=".activities.MainActivity"
#连接Appium服务器
driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities)
#退出
driver.quit()

在脚本内启动其它app

应用场景

如果一个应用需要跳转到另外一个应用,就可以使用这个api进行应用的跳转,就像我们通过外卖应用下订单之后会跳转到支付应用一样。

方法名和参数名

#脚本内启动其他app
#参数:
#appPackage:要打开的程序的包名
# appActivity:要打开的程序的界面名
driver.start_activity(appPackage, appActivity)

示例

from appium import webdriver
desired_caps = dict()
#手机参数
desired_caps['platformName'] = 'Android'
desired_caps['platformversion'] = '7.1.2'
desired_caps['deviceName'] = '127.0.0.1:62001'
#应用参数
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] ='.Settings'
# 获取driver
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
#跳转到短信
driver.start_activity('com.android.mms','.ui.ConversationList')
# 退出driver
driver.quit()

获取app的包名和界面名

应用场景

当我们从一个应用跳转到另外一个应用的时候,想输出其包名、界面名或者想在报告中展现对应信息,我们就可以调用这个属性来进行获取

属性名

#获取包名
driver.current_package
#打印当前包名
print(driver.current_package)
#获取界面名
driver.current_activity
#打印当前界面名
print(driver.current_activity)

关闭app和驱动对象

应用场景

有的时候我们需要关闭某个应用程序后,再打开新的应用。那么如何关闭应用程序呢?

方法名

#关闭当前操作的app,不会关闭驱动对象
driver.close_app()
#关闭驱动对象,同时关闭所有关联的app
driver.quit()

安装和卸载以及时候是否安装app

应用场景

一些应用市场的软件可能会有一个按钮,如果某一个程序已经安装则卸载,如果没有安装则安装

方法名

#安装app
#参数:
#app-path:apk路径
driver.install_app(app_path)

#卸载app
#参数:
#app_id:应用程序包名
driver.remove_app(app_id)

#判断app是否已经安装
#参数:
#app_id:应用程序包名
#返回值:布尔类型,True为安装,False为没有安装
driver.is_app_installed(app_id)

将应用置于后台

应用场景

银行类app会在进入后台一定时间后,如果再回到前台也页面会重新输入密码,如果需要自动化测试这种功能,可以使用这个api进行测试

方法

#app放置到后台一定时间后再回到前台,模拟热启动
#参数:
#seconds:后台停留多少秒
driver.background_app(seconds)

注意点

热启动:表示进入后台回到前台。关机再开这种切断电源的行为可以叫做“冷启动“