Selenium之等待机制

Selenium之等待机制

用于网络延迟严重场景,避免代码执行较快,但是遇到标签还没有加载完成就对该标签进行操作,就会出现报错在selenium中,有三种等待机制可用:

1.显式等待,当有需要等待的标签时,才去使用等待

2.隐式等待,在浏览器对象创建之初,就为这个对象添加一个被动,即隐式等待,当遇到查找标签的时候,就自动触发被动也就是隐式等待

3.强制等待,time.sleep(1),休眠

from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys(r'断浪狂刀忆年少-cnblogs')
driver.find_element_by_id('su').click()
# 显示等待
wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=0.5)  # timeout超时时间,poll_frequency轮询,每%s秒去检查一下标签有没有加载成功
wait.until(EC.visibility_of_element_located(
    (By.LINK_TEXT, '断浪狂刀忆年少 - 博客园'))).click()  # 直到找到加载成功找到这个元素后,在进行事件操作(By.LINK_TEXT,'断浪狂刀忆年少 - 博客园')这里要用元组
sleep(1)
driver.quit()

# 隐式等待
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys(r'断浪狂刀忆年少-cnblogs')
driver.find_element_by_id('su').click()
driver.implicitly_wait(30)  # 隐式等待
driver.find_element_by_link_text('断浪狂刀忆年少 - 博客园').click()

sleep(1)
driver.quit()
幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
原文地址:https://www.cnblogs.com/TodayWind/p/14903615.html