selenium等待

扫码查看

有三种等待方法

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()#点击元素
12-26 09:06
查看更多