有三种等待方法
1.time.sleep(5)
简单粗暴,强制等待5秒
2.隐式等待
driver.implicityly_wait(10)
在所有执行前,如果没有找到都等待10秒,我试了,不好用,好多都不起作用,为什么不知道
3.显式等待,针对某个元素,找不到之前等待,找到之后立刻执行下一句,查找时间超过给定时间就报错
方法一
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait driver=webdriver.Chrome() driver.get("www.") wait=WebDriverWait(driver,10,0.5) #最多等待十秒,一个文件定义一次就可以了, wait.until(lambda driver:driver.find_element_by_xpath('aaa'))#找到该xpath对应的元素后,立刻执行下一步 driver.find_element_by_xpath('aaa').click()#点击元素 wait.until(lambda driver:driver.find_element_by_xpath('bbb'))#找到该xpath对应的元素后,立刻执行下一步 driver.find_element_by_xpath('aaa').send_keys("bbb")#输入文本
方法二
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC driver=webdriver.Chrome() driver.get("www.") wait=WebDriverWait(driver,10,0.5) #最多等待十秒,一个文件定义一次就可以了, locator=(By.XPATH,'aaa') wait.until(EC.presence_of_element_located(locator))#找到该xpath对应的元素后,立刻执行下一步 driver.find_element_by_xpath('aaa').click()#点击元素