python+selenium基础篇,三种等待方式,显示、隐式、强制等待
1、显示等待:
from selenium import webdriver from time import sleep from selenium.webdriver.support.ui import WebDriverWait #显示等待针对元素操作 #EC预期条件类(里面主要有一些判断元素是否出现,弹出框是否出现,以及是否出现新窗口等。) #EC用的比较多的就是和显示等待一起使用,通过显示等待的方法来循环判断是否元素是否出现 from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By#用于元素定位 dr=webdriver.Firefox() dr.get("https://www.baidu.com/") dr.maximize_window() sleep(2) dr.find_element_by_css_selector('#kw').send_keys(u'测试') sleep(2) element=WebDriverWait(dr,5,0.5).until(EC.presence_of_element_located((By.ID,'su'))) #显示等待,判断搜索按钮是否存在,每隔0.5秒刷新一次,5秒内没找到报异常 element.click() sleep(2) dr.quit()
2、隐式等待
from time import sleep,ctime from selenium.common.exceptions import NoSuchElementException from selenium import webdriver dr=webdriver.Firefox() dr.get("https://www.baidu.com/") dr.maximize_window() dr.implicitly_wait(5)#设置隐式等待,等待时间5秒,隐式等待全局生效 try: print(ctime()) dr.find_element_by_css_selector("#kw").send_keys("python") dr.find_element_by_css_selector("#su1").click() except NoSuchElementException as xx: print(xx) finally: print(ctime()) sleep(2) dr.quit()
3、强制等待
from selenium import webdriver from time import sleep dr=webdriver.Firefox()#打开浏览器 dr.get("https://www.baidu.com")#打开百度 dr.maximize_window()#浏览器最大化 sleep(3)#强制等待3秒 dr.quit()#关闭浏览器