1.等待的三种方式:
(1)time.sleep(2):进程休眠/s
(2)implicitly_wait(30):等待页面完全加载完成,指的是左上角转圈结束,很耗费时间
(3)WebDriverWait(self,driver,timeout,poll_frequency=Poll_FREQUENCY,ignored_exceptions=None):等待元素出现,不需要等页面加载完成
--driver:打开浏览器的一个实例
--timeout:超时的总时长
--poll_frequency:循环去查询的间隙时间,默认0.5秒
--ignored_exceptions:忽略异常,默认忽略NoSuchElementException
(3.1)10秒以内每隔0.5秒循环查找一次元素,找到元素就返回元素本身,找不到就抛超时异常
from selenium webdriver.support.wait import WebDriverWait
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
#等待总时长10秒,默认0.5秒询问一次
element=WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("kw"))
element.send_keys("lala")
(3.2)30秒内每隔1秒循环查找元素,判断元素有没有消失,找不到元素返回True,找到抛异常(忽略元素不可见异常)
from selenium webdriver.support.wait import WebDriverWait
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
#判断页面上不存在某个元素
is_idsappeared=WebDriverWait(driver,30,1(ElementNotVisibleException)).until_not(lambda x:x.find_element_by_id("kw").is_displayed())