管理应用
1. 将当前应用放到后台
执行之后,应用会被放到后台特定时间。比如这里就是5秒,5秒过后,应用会重新回到前台。
driver.background_app(5)
官网示例:
driver.background_app(1)
sleep(2)
el= driver.find_element_by_name('Animation')
assertIsNotNone(el)
2. 检查应用是否已经安装
检查设备目前是否安装了某个应用,这里检查的是知乎APP。
这里需要的参数是该应用的包名,下面就是知乎的包名。该方法会返回True 或者 False 。
driver.is_app_installed('com.zhihu.android')
3. 安装应用
在设备上安装某个应用。参数是该应用APK文件的路径。
driver.install_app('zhihu_521.apk')
其实执行的就是:adb install zhihu_521.apk
官网示例:
assertFalse(driver.is_app_installed('io.selendroid.testapp'))
driver.install_app('/Users/isaac/code/python-client/test/apps/selendroid-test-app.apk')
assertTrue(driver.is_app_installed('io.selendroid.testapp'))
4. 卸载应用
在设备上卸载某个应用。参数是该应用的包名。
driver.remove_app('com.zhihu.android')
其实执行的就是: adb uninstall com.zhihu.android
官网示例:
assertTrue(driver.is_app_installed('com.example.android.apis'))
driver.remove_app('com.example.android.apis')
assertFalse(driver.is_app_installed('com.example.android.apis'))
5. 关闭应用
关闭 desired_caps 定义的应用。
driver.close_app()
6. 启动应用
启动 desired_caps 定义的应用。
driver.launch_app()
官网示例:
el = driver.find_element_by_name('Animation')
assertIsNotNone(el)
driver.close_app();try:
driver.find_element_by_name('Animation')exceptException as e:pass #should not exist
driver.launch_app()
el= driver.find_element_by_name('Animation')
assertIsNotNone(el)
7. 获取应用的字符串
实际操作,发现返回的就是该次会话的 session id 。
driver.app_strings
打印出来,类似下面的结果:
>
8. 重置
driver.reset()
官网示例:
el = driver.find_element_by_name('App')
el.click()
driver.reset()
sleep(5)
el= driver.find_element_by_name('App')
assertIsNotNone(el)
Activity
1. 获取当前Activity
driver.current_activity
比如下面的程序:
from appium importwebdriver
desired_caps={}
desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '4.2.2'desired_caps['deviceName'] = 'Android Emulator'desired_caps['appPackage'] = 'com.zhihu.android'desired_caps['appActivity'] = 'com.zhihu.android.app.ui.activity.MainActivity'driver= webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
b=driver.current_activityprint(b)
运行结果如下:
.app.ui.activity.MainActivity
2. 启动Activity
在当前应用中打开一个Activity ,或者启动一个新应用并打开一个Activity。
这里第一个参数是要启动的Activity的包名,第二个参数是要启动的Activity名。
driver.start_activity('com.example.android.apis', '.Foo')
比如下面的程序:
#coding=utf-8
from appium importwebdriver
desired_caps={}
desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '4.2.2'desired_caps['deviceName'] = 'Android Emulator'desired_caps['appPackage'] = 'com.zhihu.android'desired_caps['appActivity'] = 'com.zhihu.android.app.ui.activity.MainActivity'driver= webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)print(driver.current_activity)
driver.start_activity('com.android.calculator2', '.Calculator')print(driver.current_activity)
打印结果如下:
.app.ui.activity.MainActivity
.Calculator
可以看到一开始当前Activity还是 知乎的 Activity,启动计算器的Activity之后,当前Activity就变成计算器的Activity。