管理应用

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的更多相关文章

  1. Appium+python自动化27-等待activity出现(android特有的wait_activity)

    前言 在启动app的时候,如果直接做下一步点击操作,经常会报错,于是我们会在启动完成的时候加sleep. 那么问题来了,这个sleep时间到底设置多少合适呢?设置长了,就浪费时间,设置短了,就会找不到 ...

  2. Appium Python 四:怎样获取APP的Package以及Activity

    看到一篇很好的博客:[Android测试][随笔]获得App的包名和启动页Activity 除了博客上的方法,我还找到两种方法: 方法一:aapt 前提需要使用SDK Manager.exe 下载 A ...

  3. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  4. appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法 一,    打开手机的USB调试模式 二,    连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...

  5. python包管理-distutils,setuptools,pip,virtualenv等介绍

    python包管理-distutils,setuptools,pip,virtualenv等介绍 对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方 ...

  6. appium+python做移动端自动化测试

      1 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供 ...

  7. appium+Python 启动app(二)

    我们上步操作基本完成,下面介绍编写Python脚本启动app 打开我们pycharm新建.py文件 第一步:输入Python脚本代码: #coding=utf-8 from appium import ...

  8. appium+Python 启动app(一)

    当我们appium和Python环境都配置好了,如何启动我们第一个app呢?下面介绍appium+Python启动app的操作步骤,为了能够详细查看,我们这里使用夜游神模拟器进行示范. 测试项目:QQ ...

  9. Appium + Python环境搭建(移动端自动化)

    安装JDK,配置JDK环境    百度搜索下载就行,这里分享一个下载链接:https://pan.baidu.com/s/1snuTOAx 密码:9z8r. 下载好后点击进行安装.安装好后进行环境变量 ...

随机推荐

  1. Poj 题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  2. bash编程之 ~制作Mini Linux系统~

    说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...

  3. mongodb exception in initAndListen: 12596 old lock file, terminating解决方法

    错误信息如下: exception old lock file, terminating 解决方法 .删除data目录中的.lock文件 .mongod.exe --repair .启动mongod就 ...

  4. A profile to detect when a SMS database has been changed

    http://webmail.dev411.com/t/gg/tasker/12bdddbsak/a-profile-to-detect-when-a-sms-has-been-sent A bela ...

  5. My simplified pickit2 clone

    http://simon.derr.free.fr/site/spip/spip.php?article11 This is a description of my very simplified h ...

  6. 漫谈js自定义事件、DOM/伪DOM自定义事件

    一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木 ...

  7. 【MySQL案例】mysql-libs-5.1.73-3.el6_5.x86_64 conflicts with file from package Percona-Server-server

    假设遇到mysql-libs-5.1.73-3.el6_5.x86_64 conflicts with file from package Percona-Server-server报错,有两种情况导 ...

  8. Selenium2+python自动化49-判断文本(text_to_be_present_in_element)

    前言 在做结果判断的时候,经常想判断某个元素中是否存在指定的文本,如登录后判断页面中是账号是否是该用户的用户名. 在前面的登录案例中,写了一个简单的方法,但不是公用的,在EC模块有个方法是可以专门用来 ...

  9. Web Sessions Installation

    展示不使用Terracotta DSO如何集群Web Sessions. 1.要求 1)jdk1.6或者更高版本 2)Terracotta 3.7或者更高版本 3)所有被集群的对象需要实现序列化,如果 ...

  10. 快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors

    What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high ...