Selenium - 等待

1.强制等待(time.sleep(2))

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

def wait_sleep():
    driver = webdriver.Chrome()  # 实例化chromedriver
    driver.get("https://www.baidu.com")  # 打开网站 get
    time.sleep(2)    # 强制等待2秒
    res = driver.find_element(By.ID, "su").click()


if __name__ == '__main__':
    wait_sleep()

缺点:

(1)不确定页面加载时间,可能会因为等待时间过长,而影响用例的执行效率

(2)不确定页面加载时间,可能会因为等待时间过短,而导致代码依然会报错

2.隐式等待(driver.implicitly_wait(2))

使用场景:针对难以确定元素加载的具体等待时间,设置一个等待时间,轮询查找(默认0.5秒)元素是否出现,如果没有出现就抛出异常

特点:全局生效

from selenium import webdriver
from selenium.webdriver.common.by import By

def element_inter():
    driver = webdriver.Chrome()  # 实例化chromedriver
    driver.get("https://www.baidu.com")  # 打开网站 get
    driver.implicitly_wait(2)
    res = driver.find_element(By.ID, "su").click()

if __name__ == '__main__':
    element_inter()

3.显示等待(WebDriverWait(driver实例, 最长等待时间, 轮询时间).until(结束条件))

使用场景:

(1)页面元素加载是异步加载过程,通常html会先加载完成,js、css其后

(2)元素存在与否是由html决定,元素的交互是由css或者js决定

(3)隐式等待只关注元素能不能找到,不关注元素能否点击或者进行其他的交互

def element_inter():
    driver = webdriver.Chrome()  # 实例化chromedriver
    driver.get("https://vip.ceshiren.com/#/ui_study/")  # 打开网站 get
    WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable((By.ID, "success_btu")))
    driver.find_element(By.ID, "success_btu").click()
    time.sleep(3)

if __name__ == '__main__':
    element_inter()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值