Appium Python 六:管理应用和Activity

Posted 微微微笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appium Python 六:管理应用和Activity相关的知识,希望对你有一定的参考价值。

 

管理应用

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)
except Exception as e:
    pass # should not exist

driver.launch_app()
el = driver.find_element_by_name(Animation)
assertIsNotNone(el)

 

7. 获取应用的字符串

实际操作,发现返回的就是该次会话的 session id 。

driver.app_strings

打印出来,类似下面的结果:

<bound method WebDriver.app_strings of <appium.webdriver.webdriver.WebDriver (session="xxxxxxxxxxxxxxxxxxxxxxxxxxx")>>

 

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 import webdriver

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_activity
print(b)

运行结果如下:

.app.ui.activity.MainActivity

 

2. 启动Activity

在当前应用中打开一个Activity ,或者启动一个新应用并打开一个Activity。

这里第一个参数是要启动的Activity的包名,第二个参数是要启动的Activity名。

driver.start_activity(com.example.android.apis, .Foo)

比如下面的程序:

#coding=utf-8
from appium import webdriver

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。

以上是关于Appium Python 六:管理应用和Activity的主要内容,如果未能解决你的问题,请参考以下文章

Appium Python 二:理论概念理解

六:Appium元素定位xpath定位方式

Python +Appium 实现app自动化测试

Appium+Python3入门

[转]Appium搭建六:安装Android模拟器

使用 Appium 和 Python 测试 iOS 应用程序时等待元素加载?