1、安装APP
来学第一个API,我们可以
简易写法:直接传递路径
from appium import webdriver
import time
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 安装APP
driver.install_app('C:\\AAA\\yingyongbao.apk')
driver.quit()
默认:
Android OS:
(1)默认覆盖安装;
(2)超时时间默认为60000ms;
(3)默认不允许安装测试包(在manifest中标记为test的包);
(4)默认不安装在SDCard中;
(5)安装完成后是否自动授予权限,默认否;
定制化安装用法:
from appium import webdriver
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 安装APP
driver.install_app(app_path='C:\\AAA\\yingyongbao.apk',
replace=False, # 不允许覆盖
timeout=10000, # 超时时间为10秒
allowTestPackages=True, # 允许测试包
useSdcard=False, # 不要安装在Sdcard
grantPermissions=False) # 授予权限
driver.quit()
2、判断APP是否安装
from appium import webdriver
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 判断APP是否安装,传递的参数为包名
res = driver.is_app_installed('com.tencent.android.qqdownloader')
print(res)
driver.quit()
3、启动APP(launch APP)
在设备上启动desired capabilities中指定的应用程序。
from appium import webdriver
from time import sleep
desired_caps = {
"deviceName": "127.0.0.1:7555",
"appPackage": "com.android.settings", # 包名
"appActivity": "com.android.settings.Settings", #activity信息
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等待3秒
sleep(3)
# 将APP置于后台运行5秒钟,然后再切回前台
driver.background_app(5)
# 关闭APP
driver.close_app()
sleep(3)
# 重新启动APP
driver.launch_app()
sleep(3)
driver.quit()
4、APP后台运行(background APP)
将应用程序切换到设备的后台运行。
参考上方代码
5、关闭APP(close)
在设备上关闭desired capabilities中指定的且正在运行的应用程序。
参考上方代码
6、重启APP(reset)
重启设备上的当前应用程序。
from appium import webdriver
from time import sleep
desired_caps = {
"deviceName": "127.0.0.1:7555",
"appPackage": "com.android.settings", # 包名
"appActivity": "com.android.settings.Settings", #activity信息
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等待3秒
sleep(3)
# 重启APP
driver.reset()
sleep(3)
driver.quit()
7、移除APP(remove)
从设备上删除指定的应用程序,这里移除应用宝APP
from appium import webdriver
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 卸载APP,参数为包名
driver.remove_app('com.tencent.android.qqdownloader')
driver.quit()
注:
(1)默认不保存APP数据;
(2)默认超时时间为20000ms;
复杂用法:通过参数指定包名,是否保存数据,超时时间
from appium import webdriver
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 卸载APP,参数为包名
driver.remove_app(app_id='com.tencent.android.qqdownloader',
keepData=False,
timeout=30000)
driver.quit()
8、激活APP(activate)
如果应用程序没有运行或正在后台运行,则激活该应用程序。
from appium import webdriver
from time import sleep
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等待3秒
sleep(3)
# 如果应用程序没有运行或正在后台运行,则激活该应用程序
driver.activate_app('com.android.settings')
sleep(3)
driver.quit()
注意,activate_app()和launch_app()有什么区别呢?
(1)前者不针对desired capabilities,需要在括号中传递要启动的APP报名;后者针对desired capabilities中的APP,不需要传递参数;
(2)当使用driver.quit()退出时,activate_app()启动的APP不会关闭;而launch_app()启动的APP会关闭;
9、终止运行APP(terminal APP)
终止正在运行的应用程序
from appium import webdriver
from time import sleep
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等待3秒
sleep(3)
# 如果应用程序没有运行或正在后台运行,则激活该应用程序
driver.activate_app('com.android.settings')
sleep(3)
# 终止应用程序
driver.terminate_app('com.android.settings')
sleep(3)
driver.quit()
注:
默认超时时间为500ms。可以指定超时时间
driver.terminate_app(app_id='com.android.settings',
timeout=600)
10、获取APP状态
获取APP的状态。
from appium import webdriver
from time import sleep
desired_caps = {
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等待3秒
sleep(3)
# 如果应用程序没有运行或正在后台运行,则激活该应用程序
driver.activate_app('com.android.settings')
sleep(3)
# 启动状态的APP,app_state=4
status1 = driver.query_app_state('com.android.settings')
print(status1)
driver.terminate_app('com.android.settings')
# 关闭状态的APP,app_state=1
status2 = driver.query_app_state('com.android.settings')
print(status2)
driver.quit()
11、获取APP字符(strings)
从设备返回应用程序字符串。
from appium import webdriver
from time import sleep
# com.tencent.android.qqdownloader/com.tencent.pangu.necessary.NewPhoneActivity
desired_caps = {
"deviceName": "127.0.0.1:7555",
"appPackage": "com.tencent.android.qqdownloader",
"appActivity": "com.tencent.pangu.necessary.NewPhoneActivity",
"platformName": "Android",
}
# 因为前面加了appPackage的信息,这里会自动启动“设置”这个APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
res = driver.app_strings()
print(res)
driver.quit()
注意,desired capabilities中需要指定APP