1、强制等待,不管元素是否出现,一定会等待时间结束后,才进行下一步操作-->sleep
1 import time 2 from selenium import webdriver 3 4 driver=webdriver.Chrome() 5 6 # 访问一个网页 7 driver.get("https://www.baidu.com") 8 driver.maximize_window() 9 # 点击登录按钮 10 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click() 11 time.sleep(10)#等待10秒之后才会进行下面的操作 12 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click() 13 #关闭浏览器 14 driver.quit()
2、隐形等待implicitly_wait(time),整个会话周期有效,从打开浏览器到关闭浏览器之间都有效(只需要设置一次就好,但是对于alert弹框,窗口切换不能使用)
1 from selenium import webdriver 2 3 driver=webdriver.Chrome() 4 5 # 访问一个网页 6 driver.get("https://www.baidu.com") 7 driver.maximize_window() 8 # 点击登录按钮 9 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click() 10 11 # 等待下一个元素出现 12 # 1、强制等待 13 # time.sleep(10) 14 # 2、隐形等待implicitly_wait,整个会话周期有效,从打开浏览器到关闭浏览器之间都有效 15 driver.implicitly_wait(30) 16 17 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click() 18 19 driver.quit()
3、显性等待WebDriverWait,明确等到某个条件满足之后,再去执行下一步操作,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
1 from selenium import webdriver 2 from selenium.webdriver.support.wait import WebDriverWait 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.common.by import By 5 driver=webdriver.Chrome() 6 7 # 访问一个网页 8 driver.get("https://www.baidu.com") 9 driver.maximize_window() 10 # 点击登录按钮 11 driver.find_element_by_xpath("//div[@id='u1']//a[@name='tj_login']").click() 12 13 # 等待下一个元素出现 14 # 1、强制等待 15 # time.sleep(3) 16 # 2、隐形等待implicitly_wait,整个会话周期有效,从打开浏览器到关闭浏览器之间都有效 17 # driver.implicitly_wait(30) 18 19 # 3、显性等待WebDriverWait,明确等到某个条件满足之后,再去执行下一步操作,程序每隔xx秒看一眼,如果条件成立了,
#则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException 20 WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.ID,"TANGRAM__PSP_10__footerULoginBtn"))) 21 22 driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click() 23 24 driver.quit()