android wait()参数,等待activity出现(android特有的wait_activity)

本文介绍了Android自动化测试中wait_activity的方法,用于等待特定activity出现,避免因启动时间不确定而设置不精确的sleep。通过示例代码展示了如何使用wait_activity提高测试效率,减少时间浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在启动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

# 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.运行结果:

76828963db8eb9eea2fb3480fdda6b45.png

等待activity

1.用sleep太浪费时间了,并且不知道什么时候能启动完成,所以尽量不用sleep

2.上一步已经获取当主页面的activity了,那就可以用wait_activity等它出现了,再做下一步的点击操作

8c22c4fd93c7cbc4796553e1d71e39d1.png

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()

随机推荐

XAF学习笔记之-多表头设计

空闲之余,看了下全英文的DEV 的XAF帮助文档,一半的英文我认识他,一半的英文他认识我,反正拆开成26个字母我全认识 不那么啰嗦了,先看效果 如何做:分以下几步 第一步:打开这个文件,这个文件就是X ...

centos网络安装中的注意点

转自centos网络安装中的注意点 centos网络安装的教程网上很多,这里仅仅记录一下安装过程中网上别处提及很少的注意点. 1.centos默认会安装selinux,并且默认阻止ftp服务,所以要禁 ...

html通用导航条制作

第一步:先创建一个盒子,定义类为 nav,width 1000,height 40px,防京东的导航,与浏览器顶部100px,margin-top:100px,看的更直观 第二步:使用无序列表放置,导 ...

如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)

豆电雨 搬砖自味精:http://awhisper.github.io/2016/03/12/滚动圆角卡顿刨根问底/ 使用Quartz2D直接绘制图片 步骤:  a.创建目标大小(cropWidth, ...

Struts2拦截SQL注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值