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()
幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。