在自動化測試中,很多時候都會有等待頁面某個元素出現后能進行下一步操作,或者列表中顯示加載,直到加載完成后才進行下一步操作,但時間都不確定,如下圖所示
幸運的是,在selenium 2后有一個模塊expected_conditions,里面有很多函數可以完成這個工作,相關博客可見
http://www.cnblogs.com/nbkhic/p/4885041.html
但在selenium 1中或自己僅僅想寫個簡單用法該怎么處理那?解決如下:
from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By import selenium.webdriver.support.expected_conditions as EC import selenium.webdriver.support.ui as ui # 一直等待某元素可見,默認超時10秒 def is_visible(locator, timeout=10): try: ui.WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.XPATH, locator))) return True except TimeoutException: return False # 一直等待某個元素消失,默認超時10秒 def is_not_visible(locator, timeout=10): try: ui.WebDriverWait(driver, timeout).until_not(EC.visibility_of_element_located((By.XPATH, locator))) return True except TimeoutException: return False
調用方法很簡單,只需要在用時,調用如下:
is_not_visible('//input[@input="search-error"]')