W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
顯式的?waits
?等待一個確定的條件觸發(fā)然后才進行更深一步的執(zhí)行。最糟糕的做法是?time.sleep()
?,這里指定的條件是等待一個固定的時間段。使用?WebDriverWait
?結(jié)合?ExpectedCondition
?是一種便利的方法,它可以讓你編寫的代碼根據(jù)實際情況確定等待的時間:
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://m.hgci.cn")
try:
element = WebDriverWait(driver,10).until(
EC.presence_of_element_located((By.NAME,"w"))
)
finally:
driver.quit()
這段代碼會等待10秒,如果10秒內(nèi)找到元素則立即返回,否則會拋出?TimeoutException
?異常,?WebDriverWait
?默認每500毫秒調(diào)用一下?ExpectedCondition
?直到它返回成功為止。?ExpectedCondition
?類型是布爾型,成功的返回值就是?true
?,其他類型的?ExpectedCondition
?成功的返回值就是 ?not null
?。
詳細的?ExpectedCondition
?可以參看 瀏覽器驅(qū)動。
自動化網(wǎng)頁操作時,有許多頻繁使用到的通用條件。下面列出的是每一個條件的實現(xiàn)。Selenium + Python 提供了許多方便的方法,因此你不需要自己編寫?expected_condition
?的類,或者創(chuàng)建你自己的通用包。
title_is
?title_contains
?presence_of_element_located
?visibility_of_element_located
?visibility_of
?presence_of_all_elements_located
?text_to_be_present_in_element
?text_to_be_present_in_element_value
?frame_to_be_available_and_switch_to_it
?invisibility_of_element_located
?element_to_be_clickable
?- 元素展示并且可用staleness_of
?element_to_be_selected
?element_located_to_be_selected
?element_selection_state_to_be
?element_located_selection_state_to_be
?alert_is_present
?from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver,10)
element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))
?expected_conditions
?模塊包含了一系列預(yù)定義的條件來和?WebDriverWait
?使用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: