在使用selenium python进行web自动化测试时,时常需要等待页面元素的出现,特别是页面加载的过程,需要用到等待
以下是三种selenium python的等待方式:
1.sleep()
sleep(),强制等待,设置休眠时间,通过导入time包来使用

from time import sleep
sleep(5)		# 强制等待5秒钟

缺点:sleep只能选择一个固定的时间进行等待
2.implicitly_wait()
implicitly_wait(),隐性等待,是 webdirver 提供的一个超时等待,智能等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。通过导入selenium包就可使用。

from selenium import webdriver
wd=webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10)      # 设置最长等待时间,每隔半秒寻找一次,最长等待时间为10秒

3.WebDriverWait()
WebDriverWait(),显性等待,是 webdirver 提供的方法,在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
其语法格式如下:

WebDriverWait语法格式:
    driver:webdriver的驱动程序
    timeout:超时时间,默认以秒为单位
    poll_frequency:休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
WebDriverWait一般由until或until_not配合使用:
    until(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值不为False
    until_not(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值为False

eg.

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep

wd=webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')

# 谷歌驱动,超时时间为10,每个0.5秒监测一次
wait=WebDriverWait(driver=wd,timeout=10,poll_frequency=0.5)	
# 也可直接写为wait=WebDriverWait(wd,10,0.5)	

# 可与until配合使用
wait.until(lambda wd:wd.find_element_by_css_selector("h5中元素的定位"))
sleep(1)		# 个人认为最好休眠一秒,方便下面进行断言

# 断言(我判断的是在新增弹窗中新增XX后点击确定,弹窗消失,页面加载完成后会跳出“新增成功”的提示)
self.assertEqual(u'新增成功!',wd.find_element_by_css_selector("h5中元素的定位").text)

PS:lambda表达式

lambda 表达式可以用来声明匿名函数。lambda 函数是一种简单的、在同一行中定义函数的方法。lambda 函数实际生成了一个函数对象lambda 表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。

python等待程序 python等待一秒_python等待程序