专栏首页从零开始学自动化测试Appium+python自动化27-android特有的wait_activity

Appium+python自动化27-android特有的wait_activity

前言 在启动app的时候,如果直接做下一步点击操作,经常会报错,于是我们会在启动完成的时候加sleep。 那么问题来了,这个sleep时间到底设置多少合适呢?设置长了,就浪费时间,设置短了,就会找不到元素报错了。 这个时候我们可以用wait_activity的语法,等到你想点击的页面activity出现了,再点击,可以有效的节省时间。 一、wait_activity 1.查看源码 ``` def wait_activity(self, activity, timeout, interval=1): """Wait for an activity: block until target activity presents or time out. This is an Android-only method. :Agrs: - activity - target activity - timeout - max wait time, in seconds - interval - sleep interval between retries, in seconds """ try: WebDriverWait(self, timeout, interval).until( lambda d: d.current_activity == activity) return True except TimeoutException: return False ``` 2.解释说明: ``` wait_activity(self, activity, timeout, interval=1): 等待指定的activity出现直到超时,interval为扫描间隔1秒 即每隔几秒获取一次当前的activity android特有的 返回的True 或 False :Agrs: - activity - 需等待的目标 activity - timeout - 最大超时时间,单位是s - interval - 循环查询时间 用法:driver.wait_activity(‘.activity.xxx’,5,2) ``` 二、 获取current_activity 1.打开app后,先sleep10秒,等app完全启动完成进入主页面,然后获取当前界面的activity ```python # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platformName': 'Android', 'deviceName': '127.0.0.1:62001', 'platformVersion': '4.4.2', 'appPackage': 'com.baidu.yuedu', 'appActivity': 'com.baidu.yuedu.splash.SplashActivity' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) sleep(10) # 获取当前界面activity ac = driver.current_activity print(ac) ``` 2.运行结果:

三、 等待activity 1.用sleep太浪费时间了,并且不知道什么时候能启动完成,所以尽量不用sleep 2.上一步已经获取当主页面的activity了,那就可以用wait_activity等它出现了,再做下一步的点击操作

3.参考代码 ``` # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platformName': 'Android', 'deviceName': '127.0.0.1:62001', 'platformVersion': '4.4.2', 'appPackage': 'com.baidu.yuedu', 'appActivity': 'com.baidu.yuedu.splash.SplashActivity' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # sleep(10) # 不用sleep # 获取当前界面activity ac = driver.current_activity print(ac) # 等主页面activity出现,30秒内 driver.wait_activity(".base.ui.MainActivity", 30) # 点知道了 driver.find_element_by_id("com.baidu.yuedu:id/positive").click() ```

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:YOYO

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • appium+python自动化41-微信公众号

    本篇介绍如何在微信公众号上自动化测试,以操作我的个人公众号:yoyoketang为例,没关注的,先微信关注了,再跟着操作

    上海-悠悠
  • Cypress学习10-Navigation 导航功能(go,reload,visit)

    上海-悠悠
  • Selenium2+python自动化75-Chrome配置加载

    一、加载Chrome配置 chrome加载配置方法,只需改下面一个地方,username改成你电脑的名字(别用中文!!!) '--user-data-dir=...

    上海-悠悠
  • 提示[译] Android 生命周期备忘录 —— 第四部分:ViewModel、半透明 Activity 及启动模式

    ViewModel 的生命周期非常简单:它只有 onCleared 这一个回调。但是,这个函数的作用域在 activity 和 fragment 中是有区别的:

    Android 开发者
  • Android四大组件完全解析(一)---Activity

    本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,...

    fanfan
  • 再看Android官方文档之Activity&Intent

    子勰
  • 安卓开发之Activity传递参数

    1、知识点:启动activity、注册activity、button绑定监听事件、传递参数、获取参数 2、传递参数以及绑定监听代码(注意如果绑定监听出现错误:需...

    苦咖啡
  • Android 中Fragment与Activity通讯的详解

    尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。 ...

    砸漏
  • 教你自己写Android第三方库

    其实Android studio的出现很大程度上方便了我们Android开发人员,今天我们说说怎么构建我们自己的库。 依次按File->New Moudle->...

    xiangzhihong
  • 详解Android中的四大组件之一:Activity详解

    running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态。

    达达前端

扫码关注云+社区

领取腾讯云代金券