Selenium3+python自动化007-等待时间

import timehtml

1、强制等待web

sleep(秒)chrome

 

2、显示等待浏览器

使WebDriver等待指定元素条件成立时继续执行,不然在达到最大时长时抛出超时异常(TimeoutException)ide

1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
2. 导包 判断条件 --> from selenium.webdriver.support import expected_conditions as EC
(将expected_conditions 经过as关键字起个别名:EC)
3. WebDriverWait(driver, timeout, poll_frequency=0.5)
1). driver:浏览器对象
2). timeout:超时的时长,单位:秒
3). poll_frequency:检测间隔时间,默认为0.5秒
4. 调用方法 until(method):直到..时
1). method:调用EC.presence_of_element_located(element)
element:调用By类方法进行定位测试

WebDriverWait(driver,30).until(EC.presence_of_element_located((By.ID,'userA')))ui

 1 # 导selenium包显示等待
 2 from selenium import webdriver
 3 from time import sleep
 4 
 5 # 访问chromedriver.exe
 6 chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe")
 7 
 8 # 访问驱动
 9 driver = webdriver.Chrome(chromedriver)
10 # 实例化浏览器对象
11 # driver=webdriver.Chrome()
12 
13 # 定义url
14 url='D:\\pycharm\\lebohtml\\自动化05期-007-Selenium经常使用定位方法\\html\\注册A.html'
15 # 实例化浏览器对象
16 # driver=webdriver.Chrome()
17 
18 
19 # 打开url
20 driver.get(url)
21 
22 from selenium.webdriver.support.wait import WebDriverWait
23 from selenium.webdriver.support import expected_conditions as EC
24 from selenium.webdriver.common.by import By
25 
26 # 调用显式等待
27 ele=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'userA')))
28 ele.send_keys('admin')
29 
30 
31 # 第一种写法
32 # driver.find_element_by_id('userA').send_keys('admin')
33 
34 # 等待3秒
35 sleep(3)
36 
37 # 关闭浏览器
38 driver.quit()
显示等待

显示等待的优缺点:url

优势:显示等待比隐式等待更节约测试脚本执行时间spa

缺点:每一个操做须要单独判断code

 

3、隐式等待

若是定位某一元素定位失败,那么就会触发隐式等待有效时长,若是在指定时长内加载完毕,则继续执行,不然

抛出NoSuchElementException异常,若是元素在第一次就定位到则不会触发隐式等待时长;

driver.implicitly_wait(timeout);

 1 # 导selenium包
 2 from selenium import webdriver  3 from time import sleep  4 
 5 # 访问chromedriver.exe
 6 chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe")  7 
 8 # 访问驱动
 9 driver = webdriver.Chrome(chromedriver) 10 # 实例化浏览器对象
11 # driver=webdriver.Chrome()
12 
13 # 定义url
14 url='D:\\pycharm\\lebohtml\\自动化05期-007-Selenium经常使用定位方法\\html\\注册A.html'
15 # 实例化浏览器对象
16 # driver=webdriver.Chrome()
17 
18 
19 # 打开url
20 driver.get(url) 21 
22 # 调用饮食等待
23 driver.implicitly_wait(10) 24 driver.find_element_by_id('userA').send_keys('admin') 25 # 等待3秒
26 sleep(3) 27 
28 # 关闭浏览器
29 driver.quit()
隐式等待

隐式等待的优缺点: 

优势:只须要设置一次,在driver的整个生命周期起做用

缺点:程序会一直等待整个页面加载完成,也就是说浏览器窗口标签栏中不在出现转动的小圆圈,才会继续执行下一步。这样,想要获取的元素即便已经加载完成,也须要等待整个页面加载完成才能继续执行下一步

相关文章
相关标签/搜索