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
网友评论