Selenium常用操作——页面等待

目录

一.强制等待

二.隐式等待

二.显式等待


一.强制等待

time.sleep()

缺点:不智能,不能根据具体情况具体分析。设置时间太短或太长。

二.隐式等待

  • 隐式等待针对元素定位。设置等待时间,如在规定时间内元素定位成功,则执行下一步。如果未成功,报超时异常。
  • 隐性等待对整个driver的周期都起作用,只需要设置一次。
"""隐式等待"""

from selenium import webdriver

url = 'https://www.baidu.com/'

# 创建浏览器对象
driver = webdriver.Chrome()
# 设置隐式等待10秒
driver.implicitly_wait(10)
driver.get(url)

# 定位图片
img = driver.find_element_by_xpath('//*[@id="lg"]/map/area')

二.显式等待

  • 明确等待某一个元素
  • 根据判断条件进行灵活等待,程序每隔一段时间检测一次,如果检测结果与条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间为止,然后抛出TimeoutException异常。
  • 显式等待涉及到多个模块:By、expected_conditions和WebDriverWait。

各模块说明如下

By:设置元素定位方式,共八种。

1.id属性定位find_element(By.ID,"id")
2.name属性定位find_element(By.NAME,"name")
3.classname属性定位find_element(By.CLASS_NAME,"claname")
4.a标签文本属性定位find_element(By.LINK_TEXT,"text")
5.a标签部分文本属性定位find_element(By.PARTIAL_LINK_TEXT,"partailtext")
6.标签名定位·find_elemnt(By.TAG_NAME,"input")
7.xpath路径定位find_element(By.XPATH,"//div[@name='name']")
8.css选择器定位find_element(By.CSS_SELECTOR,"#id")

expected_conditions:验证网页元素是否存在,提供了多种验证方式。

WebDriverWait参数说明如下

  • driver:浏览器对象driver。
  • timeout:超时时间,等待的最长时间。
  • poll_frequency:检测的间隔步长,默认为0.5s。
  • ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。
  • until:条件判断。
  • until not:与until逻辑相反。
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions

# visibility_of_element_located检查网页元素是否可见
condition = expected_conditions.visibility_of_element_located((By.ID,'kw'))
WebDriverWait(driver = driver,timeout=20, poll_frequency=0.5).until(condition)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值