selenium 三种等待方式

2020-03-23  本文已影响0人  lvyz0207

selenium 的三种等待方式

### selenium 三种等待方式
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
# driver.implicitly_wait(10)   # 隐式等待,整个生命周期可用
driver.get("https://baidu.com")

## 强制等待
time.sleep(3)
print("强制等待3秒")

## 隐式等待

driver.implicitly_wait(20)

driver.find_element_by_id('kw').send_keys('python')

# driver.find_element_by_id('su').click()

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "su"))
    )
    element.click()
    print("显式等待!!")
finally:
    time.sleep(15)
    print("等15s在关闭浏览器!!")
    driver.quit()

上面的隐式等待包括:WebDriverWait 默认每 500 毫秒调用一次 ExpectedCondition 中的方法最多等待10s秒钟

wait_result = WebDriverWait(driver=self.driver, timeout=300, poll_frequency=0.5,  ignored_exceptions=None).until(
    EC.text_to_be_present_in_element((By.id, 'su'), u'百度'))

# 各个参数的含义:
# driver:浏览器驱动
# timeout:最长超时等待时间
# poll_frequency:检测的时间间隔,默认为500ms
# # ignore_exception:超时后抛出的异常信息,默认情况下抛 NoSuchElementException 异常
# 
# presence_of_element_located:判断某个元素是否被加到了dom树里,并不代表该元素一定可见
# text_to_be_present_in_element:判断某个元素中的text是否 包含 了预期的字符串
# visibility_of_element_located:判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0


唯美手绘.jpeg
上一篇 下一篇

猜你喜欢

热点阅读