显示等待

# WebDriver 提供了两种类型的元素等待方式:显示等待 和 隐式等待

# 显示等待是 WebDriver 等待某个条件成立则继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)

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


driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver, 5, 0.5).until(EC.visibility_of_element_located((By.ID, "kw")))
element.send_keys("selenium")

driver.quit()

# WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
# 参数分别是,
    # driver  浏览器驱动,
    # timeout  最长超出时间,
    # poll_frequency=0.5   检测的间隔时间(步长),默认0.5 ,
    # ignored_exceptions=None   超时后的异常信息,默认 NoSuchElementException
# WebDriverWait 一般与 until() 和  until_not() 方法配合使用
#     until(method, message="")    调用该方法提供的驱动程序作为一个参数,直到返回值为True
#     until_not(method, message="")  调用该方法提供的驱动程序作为一个参数,直到返回值为False


# 除 expected_conditions 类提供的丰富的预期条件判断方法外,还可以利用前面学过的 is_displayed() 方法自己实现元素显示等待
from time import sleep, ctime


driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

print(ctime())

for i in range(10):
    try:
        e1 = driver.find_element_by_id("kw")
        if e1.is_displayed():
            break

    except:
        pass
    sleep(1)
else:
    print("time out")

print(ctime())

driver.quit()

 

posted @ 2020-02-15 21:36  gupanpan  阅读(144)  评论(0)    收藏  举报