十五.python+selenium之等待时间(三种)

1. 强制等待时间 sleep() : 必须导入time包后才可以使用,强制等待生效时间=页面跳转时间+sleep()设置休眠时间

2.显示等待时间 WebDriverWait() : 必须导入WebDriverWait包才可以使用,显示等待时间是针对单个元素生效的,当在规定时间内找到了对应元素,则执行下一步操作。

3.隐式等待时间 implicitly_wait() : 智能等待时间,是针对全局的元素都生效,不需要导入包。当在规定时间内找到了对应元素,则执行下一步操作。

强制等待时间使用语法:sleep(s)    s表示时间,以秒为单位  例:sleep(2)  休眠2s

显示等待时间使用语法:

WebDriverWait(x,y,z).until(lambda x:x.find_element_by_元素定位方法("对应元素方法的值"))

x表示网页窗口对象 

y表示总等待时间(s) 

z表示等待过程中,每隔多久查看一次元素,单位s

until是固定格式,可以理解为直到元素定位到为止,lambda x:x是一个匿名函数构建的方法,这里不太好理解可以理解为固定格式lambda总体就是网页窗口对象,而后面的.find_element_by_....就是援用之前的定位方法

隐等待时间使用语法:  网页对象名.implicity_wait()

以下是脚本演示:

#coding:utf-8
from selenium import webdriver
from time import sleep #导入强制等待时间的包
from selenium.webdriver.support.ui import WebDriverWait #导入显示等待时间的包
bro = webdriver.Firefox()
bro.maximize_window()
bro.implicitly_wait(5) #隐式时间等待,智能等待,针对于全局
bro.get("https://www.baidu.com")
sleep(2)  #休眠2s
a = WebDriverWait(bro,10,2).until(lambda x:x.find_element_by_id("kw")) #显示等待时间,针对于单个元素进行时间的等待
a.send_keys("123")
#总结:只针对一个元素进行时间的等待,要是找不到该元素则会一直消耗完所有的等待时间才进行下一步

其中需要注意的是,隐式等待时间必须在元素出现之前声明,一般都是放在代码的前面。

一般的导入包也是放在代码的最前面。

猜你喜欢

转载自blog.csdn.net/Static_at/article/details/81165199