Selenium 元素等待简单使用

Selenium 元素等待
  • 在做web自动化测试时,有些时候需要等待页面上的元素加载完之后,才能操作,不然元素定位就会超时,程序就会抛出ElementNotVisibleException异常。
1. 强制等待 sleep
  • sleep()time模块中的方法,用来做强制等待,
  • 缺点:不管元素有没有加载出来,它都会等待这么久,会造成元素已经加载出来了,但是由于设置等待时间的原因,还会在等待中,效率低,还有一种就是元素还没有加载出来,但是等待的时间已经到,就不在等待,代码就会报错
from selenium import webdriver
import time


# time 的用法

# 创建浏览器驱动
driver = webdriver.Chrome()
# 打开百度地址
driver.get("http://www.baidu.com")
# 设置等待3秒
time.sleep(3)
# 定位元素
web01 = driver.find_element_by_xpath('//input[@id="kw"]')
web01.send_keys("天气预报")

2. 隐式等待 implicitly_wait
  • implicitly_wait()是webdriver 中的方法,使用隐式等待,在一个模块中定位每个元素的时候都会自动调用隐式等待,当调用的元素加载出来以后,隐式等待就不会在等待了,超过设置的等待时间,就会报错
from selenium import webdriver
# 隐私等待
driver = webdriver.Chrome()
driver.get("http://wwww.baidu.com")
# 设置最大的等待时间,如果超过这个时间,程序就会报错
driver.implicitly_wait(20)
web01 = driver.find_element_by_xpath('//*[@class="s_ipt" and @name="wd"]')
web01.send_keys("python")
3. 显示等待WebDriverWait
  • WebDriverWait() 在指定的时间范围内,等待到符合的元素,每隔x秒去判断一下指定的元素是否加载完,如果超时则抛出异常
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
'''
第一个参数:驱动
第二个参数:超时时间
第三个参数:轮训时间
'''
wait = WebDriverWait(driver, 30, 0.2)
# 定位器  是元祖类型的
locator01 = ("xpath", "//input[@id='kw']")
# 条件
ec01 = EC.element_to_be_clickable(locator01)

ec02 = wait.until(ec01)
print(ec02)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值