## 等待的第一种方法
- 强制等待, 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()

 

posted on 2021-11-25 15:39  熊猫星人  阅读(58)  评论(0编辑  收藏  举报