美文网首页
selenium 三种等待方式

selenium 三种等待方式

作者: lvyz0207 | 来源:发表于2020-03-23 21:42 被阅读0次

    selenium 的三种等待方式

    ### selenium 三种等待方式
    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome()
    # driver.implicitly_wait(10)   # 隐式等待,整个生命周期可用
    driver.get("https://baidu.com")
    
    ## 强制等待
    time.sleep(3)
    print("强制等待3秒")
    
    ## 隐式等待
    
    driver.implicitly_wait(20)
    
    driver.find_element_by_id('kw').send_keys('python')
    
    # driver.find_element_by_id('su').click()
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "su"))
        )
        element.click()
        print("显式等待!!")
    finally:
        time.sleep(15)
        print("等15s在关闭浏览器!!")
        driver.quit()
    
    

    上面的隐式等待包括:WebDriverWait 默认每 500 毫秒调用一次 ExpectedCondition 中的方法最多等待10s秒钟

    wait_result = WebDriverWait(driver=self.driver, timeout=300, poll_frequency=0.5,  ignored_exceptions=None).until(
        EC.text_to_be_present_in_element((By.id, 'su'), u'百度'))
    
    # 各个参数的含义:
    # driver:浏览器驱动
    # timeout:最长超时等待时间
    # poll_frequency:检测的时间间隔,默认为500ms
    # # ignore_exception:超时后抛出的异常信息,默认情况下抛 NoSuchElementException 异常
    # 
    # presence_of_element_located:判断某个元素是否被加到了dom树里,并不代表该元素一定可见
    # text_to_be_present_in_element:判断某个元素中的text是否 包含 了预期的字符串
    # visibility_of_element_located:判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0
    
    
    
    唯美手绘.jpeg

    相关文章

      网友评论

          本文标题:selenium 三种等待方式

          本文链接:https://www.haomeiwen.com/subject/qamgyhtx.html