## 等待的第一种方法
- 强制等待, time.sleep(3)
- 隐性等待, 智能等待元素被加载, 全局只需要设置一次, 只能等待元素被加载
- 显性等待,非全局
- 真的很麻烦,不容易理解。
- 你可以自己设置某种条件,如果条件满足了,就返回;如果条件不满足,就继续执行
- 等待某个元素可以被点击
- 或者某个元素可见
- 等待某个url=''
隐式等待的写法:
显性等待的写法:
import time from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as when class TestDemo: def test_01(self): service = Service(executable_path='chromedriver_95.exe') with webdriver.Chrome(service=service) as browser: browser.get("http://www.baidu.com") input_el = browser.find_element(By.XPATH, '//input[@id="kw"]') input_el.send_keys('柠檬班') search_btn = browser.find_element(By.ID, 'su') search_btn.click() # 显性等待 # 1,等待器,设置倒计时 # 2,等待条件,出现 # 3,在超时前,如果等待条件出现了; 如果等待条件没出现,会报超时的错误 wait = WebDriverWait(browser, timeout=5) condition = when.element_to_be_clickable((By.LINK_TEXT, 'lemon.ke.qom/')) lemon_link = wait.until(condition) # lemon_link = browser.find_element(By.LINK_TEXT, 'lemon.ke.qq.com') # #WebDriverWait(browser, timeout=10).until(when.element_to_be_clickable((By.LINK_TEXT, 'lemon.ke.qq.com/'))) # lemon_link = browser.find_element(By.LINK_TEXT, 'lemon.ke.qq.com/') lemon_link.click()