自动化-selenium-等待wait

1. 隐式等待 

driver.implicity_wait(10)

 

2. 线程等待 

sleep(3)

 

3. 显式等待

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.Chrome()
driver.maximize_window()
driver.get('https://cn.bing.com/')
wait = WebDriverWait(driver,3)
element = driver.find_element_by_xpath("//li[@id='office']")
# 如果是某个元素的文字会根据条件更新,用这个可以等到你要的更新值再进行下一步操作
link = wait.until(EC.text_to_be_present_in_element((By.XPATH,"//li[@id='office']"),"Office"))

# 检查DOM上是否存在元素的期望,不一定意味着元素是可见的。
wait.until(EC.presence_of_element_located((By.XPATH,"//li[@id='office']")))

# 元素可见   元素不仅仅是显示,但高度和宽度也大于0 ,参数locator
wait.until(EC.visibility_of_element_located((By.XPATH,"//li[@id='office']")))

# 可见    元素不仅仅是显示,但高度和宽度也大于0 element is the WebElement
wait.until(EC.visibility_of(element))

# 不可见 element is either a locator (text) or an WebElement
wait.until(EC.invisibility_of_element((By.XPATH,"//li[@id='office']")))

# 精确匹配title,返回true or false
wait.until(EC.title_is("微软 Bing 搜索 - 国内版"))

# 模糊匹配title,返回true or false
wait.until(EC.title_is("国内版"))

# Alert是否出现
wait.until(EC.alert_is_present())

# 检查元素指定状态。locator, is_selected
wait.until(EC.element_located_selection_state_to_be((By.XPATH,"//li[@id='office']"),True))

# 元素是选中的 参数locator
wait.until(EC.element_located_to_be_selected((By.XPATH,"//li[@id='office']")))

# the selection is selected. 参数是element
wait.until(EC.element_to_be_selected(element))

# 元素是可点 参数locator
wait.until(EC.element_to_be_clickable((By.XPATH,"//li[@id='office']")))

# 参数locator
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//li[@id='office']")))

# 参数windows handles
wait.until(EC.new_window_is_opened(driver.current_window_handle))



print(link) # 如果找到了,则link的值为ture,如果超时找不到,则会抛出TimeoutException
driver.find_element(By.XPATH,"//li[@id='office']").click()

 

posted @ 2021-01-18 17:12  静惜  阅读(726)  评论(0)    收藏  举报