web元素定位中的三种等待方法

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()

猜你喜欢

转载自www.cnblogs.com/wsk1988/p/12692265.html