设置元素等待
Posted like1824
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置元素等待相关的知识,希望对你有一定的参考价值。
隐式等待
driver.implicitly_wait(10)
默认参数的单位为秒,本例中设置等待时长为10秒。当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;
如果元素定位不到,则它将以轮询的方式(0.5s)不断地判断元素是否被定位到。假设在第6秒定位到了元素则继续执行,若直到超出设置时长(10秒)还没有定位到元素,则抛出异常
优点:一次设置,全局通用,
缺点:浪费时间,每次定位元素前都至少需要0.5秒的轮询,即对以后的所有元素都生效
from selenium import webdriver
import time
driver = webdriver.Chrome(‘D:\toolschromedriver.exe‘)
#设置隐式等待
driver.implicitly_wait(10)
driver.get(‘https://www.baidu.com/‘)
driver.find_element_by_id(‘kw‘).send_keys(‘松勤
‘)
# time.sleep(2)
driver.find_element_by_partial_link_text(‘腾讯课堂‘).click()
driver.close()
显示等待
使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)
优点:只对声明了显示等待的元素生效
缺点:麻烦,import 3个,使用也麻烦
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 #提供判断条件
import time
driver = webdriver.Chrome(‘D:\toolschromedriver.exe‘)
#get元素会等待所有元素加载完成
driver.get(‘https://www.baidu.com/‘)
driver.find_element_by_id(‘kw‘).send_keys(‘松勤
‘)
#超时时间 10s,轮询时间0.5s,即每隔0.5秒检查一次,最多等待10s,返回元素对象
ele =
WebDriverWait(driver,10,0.5).until(
EC.visibility_of_element_located(
(By.LINK_TEXT,‘松勤软件测试_腾讯课堂‘)
)
)
ele.click() #等价于driver.find_element_by_link_text(‘松勤软件测试_腾讯课堂‘).click()
driver.close()
以上是关于设置元素等待的主要内容,如果未能解决你的问题,请参考以下文章