web自动化学习-三大等待处理

实际应用中多会遇到出现元素定位不到,不能点击等情况;此时可按如下几种问题原因进行排查:元素定位信息错误、元素还没加载出来不可见、元素在iframe中。
其中元素未加载完成不可见时,可以尝试使用等待进行处理,具体如下:

关于selenium中的三大等待

1、sleep 强制等待

import time
time.sleep(3)

一般用来辅助

2、隐性等待

自定义超时时间,n秒

# 设置等待超时时间为30S
driver.implicitly_wait(30)

每个会话只调用一次
找元素、命令执行完成

3、显性等待(主要引用)

等待元素直到可见或者不可见

等待

WebDriverWait类

from selenium.webdriver.support.wait import WebDriverWait
# WebDriverWait(driver,超时时间,查看周期=0.5)
WebDriverWait(driver,超时时间,查看周期=0.5).until(条件)
WebDriverWait(driver,超时时间,查看周期=0.5).until_not(条件)
条件

expected_condition

"""
元素存在:
expected_conditions.presence_of_element_located 
元素可见:
expected_conditions.visibility_of_element_located 
元素可点击:
expected_conditions.element_to_be_clickable 
"""
from selenium.webdriver.support import expected_conditions as EC
……
# 显性等待
wait =WebDriverWait(driver,20)
# 元素表达
loc=(By.XPATH,'定位信息')
# 等待 直到等待的元素可见
wait.until(EC.visibility_of_element_located(loc))
# 截图处理
driver.save_screenshot("元素出现后的截图.png")
# 元素操作
driver.find_element(*loc).click()

4、总结

这三类等待不会冲突,各自独立,可以结合使用
实际使用中大多采取sleep 强制等待+显性等待的方式,即可覆盖大部分需求

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值