# 设置元素等待 # 显式等待 WebDriverWait :针对某一个元素进行相关等待判定 # 隐式等待: 不针对某一个元素等待,全局等待 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from time import sleep driver = webdriver.Chrome() driver.get(‘https://baidu.com‘) # 显式等待,设置等待时间,检查kw元素是否存在 element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,‘kw‘))) element.send_keys(‘selenium‘) sleep(5) driver.quit() # WebDriverWait类是由webdriver提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在, # 如果超过设置时间检测不到则抛出异常。具体格式如下: # WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None) # driver 浏览器驱动 # timeout 最长超时时间,默认以秒为单位 # poll_frequency 检测的间隔(步长)时间,默认为0.5S # ignored_exceptions 超时后的异常信息,默认情况下抛NoSuchElementException异常 # WebDriverWait一般由until(),until_not()配合使用
# is_displayed() 判断元素是否显示 from selenium import webdriver from time import sleep,ctime driver = webdriver.Chrome() driver.get(‘https://baidu.com‘) print(ctime()) for i in range(10): try: s = driver.find_element_by_id(‘su1‘) if s.is_displayed(): break except: pass sleep(1) else: print(‘time out‘) driver.close() print(ctime())
原文:https://www.cnblogs.com/biqiuqiu/p/10506882.html