该篇文章主要用于整理的是在执行自动化测试过程中的几种元素等待方法
- implicity_wait()
- sleep()
- wait_activity()
- 等待某元素出现后,再执行操作
- WebDriverWait()
一、implicity_wait()-以下案例为微博
隐式等待:属于全局的等待,它不是针对某一个元素,而是针对当前session(即当前driver对象的生命周期)的全部元素,所以只需要在构造driver对象时设置一次即可。
如果不发送此命令,则驱动程序应默认为隐式等待0s
self.driver.implicitly_wait(5) # waits 5 seconds
隐式等待一般与启动app的设置中,存放位置如下图所示:
二、sleep()
强制等待:sleep()方法是python的time模块提供,所以需要导入:from time import sleep;当执行了sleep()方法后,会强制休眠,休眠的时间可以在括号中自己设置,括号里面的数字以秒为单位,例如休眠1秒:sleep(1),括号中也能用小数点表示,例如休眠1.5秒:sleep(1.5)
from time import sleep
# 强制休眠1秒
sleep(1)
# 强制休眠1.5秒
sleep(1.5)
三、wait_activity() -以下案例为QQ
wait_activity():判断需要执行的按钮所在页面的activity出现后,再对页面执行操作
#登录按钮所在的activity:com.tencent.mobileqq//.activity.LoginActivity
# 设置等待100S,每隔2S刷新一次,等待登录按钮所在的activity页面出现,current_activity指的是当前的activity页面
driver.wait_activity(".activity.LoginActivity",100,interval=2)
# 当前页面的activity
AC = driver.current_activity
print(AC)
**注:**如何获取当前页面的activity:cmd命令中输入:adb shell dumpsys activity activities
下图中红色框内的即表示当前页面的activity,下图为微博实例,所以当前页面的activity 为:com.sina.weibo/.SplashActivity
代码中做判断时可以简写为".SplashActivity"