设置元素等待

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()

 

以上是关于设置元素等待的主要内容,如果未能解决你的问题,请参考以下文章

设置元素等待

设置元素等待

设置元素等待

显示等待和隐式等待的区别

python+selenium2自动化---设置元素等待

设置元素等待.py