自动化-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()

浙公网安备 33010602011771号