Selenium为什么需要页面等待

  • 页面等待
    大多数Web应用程序都是使用Ajax和Javascript开发的。当浏览器加载页面时,我们想要与之交互的元素可能以不同的时间间隔加载。它不仅难以识别元素,而且如果元素未定位,它将抛出“ ElementNotVisibleException ”异常。使用Waits,我们可以解决此问题。

页面等待
def wait_page():
    #     隐式等待
    browser = webdriver.Chrome()
    browser.get("https://www.zhihu.com/explore")
    browser.implicitly_wait(1)
    elments = browser.find_element_by_class_name("ExploreFollowButton")
    print(elments)

    #     显式等待
    browser.get("https://www.taobao.com/")
    wait = WebDriverWait(browser,1)
    input = wait.until(EC.presence_of_element_located((By.ID,'q')))
    button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
    print(input,button)
wait_page()
#等待的条件 | 含义
#title_is | 标题是某内容
#title_contains | 标题包含某内容
#presence_of_element_located | 节点加载出来,需要传入定位元组,如By.ID,'q'
#visibility_of_element_located | 节点可见,传入定位元组
#visibility_of | 传入的节点对象可见
# element_to_be_clickable | 节点可被点击
#staleness_of | 判断一个节点是否仍在DOM中,可以判断页面是否被刷新
#alert_is_present | 判断警告框是否弹出

你可能感兴趣的:(Selenium为什么需要页面等待)