简单玩自动化——等待获取元素(四)
_我是老欧,不扯概念只搞干货.
1. 元素等待获取
- 说明:一般用于跳转页面后获取元素时,因为网络、机器性能等原因,导致加载过慢,无法获取元素的场景。
1.1 全局等待
- 使用:driver.implicitly_wait(timeout)
(timeout:为等待最大时长,单位:秒) - 说明:全局等待为全局设置,会作用于所有元素。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 每个元素都等待3秒加载
# 这个例子没啥效果,自己找个二级页面,设个若网自己玩玩。
driver.implicitly_wait(3)
driver.find_element_by_name("wd")
driver.find_element_by_name("wd2")
driver.find_element_by_name("wd3")
1.2 单个等待
- 使用: WebDriverWait(driver, timeout, poll_frequency=0.5)
- driver:浏览器驱动对象
- timeout:超时的时长,单位:秒
- poll_frequency:检测间隔时间,默认为0.5秒
- 调用: until(method)
- method:函数名称,该函数用来实现对元素的定位
- 一般使用匿名函数来实现:lambda x: x.find_element_by_id(“xxx”)
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 3秒间隔,总时10秒。
element = WebDriverWait(driver, 9, 3).until(lambda x: x.find_element_by_id("kw"))
element.send_keys("延时获取")