浙江省建设网站徐叨法,新媒体宣传推广方案,建个大型网站需,wordpress 导出表单3 、 时间等待 在做自动化测试时#xff0c;难免会碰到一些问题#xff0c;比如你在脚本中操作某个对象时#xff0c; 页面还没有加载出来#xff0c;你的操作语句已经被执行#xff0c;从而导致脚本执行失败#xff0c;针对这样的问题 webdriver 提供了等待操作#xf…3 、 时间等待 在做自动化测试时难免会碰到一些问题比如你在脚本中操作某个对象时 页面还没有加载出来你的操作语句已经被执行从而导致脚本执行失败针对这样的问题 webdriver 提供了等待操作等待一定的时间或在一个时间段内发现对象则继续操作。 Webdriver 提供了隐式等待和显示等待当然我们也可以借助 time 包的 sleep 模块实现强制等待。
3.1 sleep 等待 sleep 是等待多少秒后再继续执行后面的代码要想使用 sleep必须先导入 time 包。 示例如下
from selenium import webdriver
from time import sleep
导入 time 包的 sleep 模块driverwebdriver.Firefox()
driver.get(http://www.chuangyijia.com/admin/login) sleep (2)
等待 2 秒也可以直接导入 time 包然后通过 time.sleep(seconds)实现
from selenium import webdriver
import time
导入 time 包的 sleep 模块driverwebdriver.Firefox()
driver.get(http://www.chuangyijia.com/admin/login) time.sleep (2)
等待 2 秒3.2 智能等待
隐式等待implicitly_wait() 当使用了隐式等待执行测试的时候如果 WebDriver 没有在 DOM 中找到元素 将继续等待超出设定时间后则抛出找不到元素的异常 换句话说当查找元素或元素并没有立即出现的时候隐式等待将等待一段时间再查找 DOM默认的时间是 0 一旦设置了隐式等待则它存在整个 WebDriver 对象实例的声明周期中隐式的等到会让一个正常响应的应用的测试变慢它将会在寻找每个元素的时候都进行等待这样会增加整个测试执行的时间。 注意隐式等待是在webdriver全局设置的只需要设置一次即可在所有的操作中生效它会在执行每个操作时都会等待一定的时间等待页面加载完成如果在规定时间内发现了待操作元素则继续执行操作。如果在规定时间内没有找到则会抛出NoSuchElementException异常。 driver.get(http://www.chuangyijia.com/admin/login) driver.implicitly_wait(10)
等待 10 秒显式等待WebDriverWait() 在 web 界面操作时如果使用 sleep 等待需要明确知道等待多长时间如果时间太短则容易产生超时未能找到操作元素如果时间太长则容易浪费时间。 注意 显示等待它可以针对某个特殊的元素进行等待等待时间到达规定时间或者元素出现时继续执行操作。与隐式等待不同的是显示等待可以设置特定的条件比如等待元素出现、元素可点击、元素可见等等可以更加精细地控制等待行为。 如果使用 implicitly_wait则是全局等待。 WebDriverWait 可以配合 webdriver 的 expected_conditions 实现针对某个元素的等待操作。示例
from selenium import webdriver
from selenium.webdriver.support import expected_conditions 导入 expected_conditions 模块
from selenium.webdriver.common.by import By
导入 By 模块from selenium.webdriver.support.ui import WebDriverWait 导入 WebDriverWait
driver.get(http://www.chuangyijia.com/admin/login)
WebDriverWait(driver,10).until(expected_conditions.visibility _of_element_located((By.ID,email)))WebDriverWait(driver,10).until(expected_conditions. visibility _of_element_located (By.is_valid(‘email’))) 这段代码需要解释WebDriverWaitdriver,10driver 为打开浏览器的操作句柄10 为超时时间until 将 expected_conditions. visibility _of_element_located((By.Id ,‘email’))作为参数直到返回 True。Until_not 直到参数返回为 false。(By.ID,‘email’’)通过 id 查找邮箱地址输入框expected_conditions. visibility_of_element_located 判断邮箱地址输入框是否可见并且该元素的高和宽不为 0。总 结该句代码的意思为判断邮箱地址输入框是否加载完成并可见如果没有完成则默认每隔 0.5 秒检查一次直到 10 秒后超时如果在 10 秒内完成则继续执行之后的代码。 更多关于 expected_conditions 的方法在后面继续说明。