千家信息网

selenium时间等待方法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,在UI自动化测试中,必然会遇到环境不稳定、网络慢等情况。当你觉得定位没有问题,但程序却直接报了元素不可见时,那你就需要思考是否因为程序运行太快或者页面加载太慢而造成了元素不可见,必须要再等待直至元素可
千家信息网最后更新 2026年11月01日selenium时间等待方法

在UI自动化测试中,必然会遇到环境不稳定、网络慢等情况。当你觉得定位没有问题,但程序却直接报了元素不可见时,那你就需要思考是否因为程序运行太快或者页面加载太慢而造成了元素不可见,必须要再等待直至元素可见和程序继续运行。而在Selenium中,三种常见的等待方式都有各自的优点或缺点,可以在了解后尝试针对不同的情况选择最优的等待方式。


1.强制等待(sleep)

设置等待最简单的方法就是强制等待,其实就是time.sleep()方法,不管它什么情况,让程序暂停运行一定时间,时间过后继续运行;缺点是不智能,设置的时间太短,元素还没有加载出来,那照样会报错;设置的时间太长,则会浪费时间,不要小瞧每次几秒的时间,case多了,代码量大了,很多个几秒就会影响整体的运行速度了;所以尽量少用这个。


#-*- coding:utf-8 -*-

import time

from datetime import datetime

print (datetime.now()) #获取当前时间

time.sleep(10) #设置等待时间10s

print(datetime.now()) #再次获取当前时间

代码很简单,主要是获取当前时候后设置了一个等待时间,然后在等待时间后面设置一个事物,这个事物来查看等待时间结束后的当前时间。通过执行结果我们很好地看到只有执行完毕等待以后才会再次执行下一步骤。


2.隐性等待(implicitly_wait())

隐式等待实际是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。这样的隐式等待会有个坑,我们都知道js一般都是放在我们的body的最后进行加载,实际这是页面上的元素都已经加载完毕,我们却还在等待全部页面加载结束。


# -*- coding: utf-8 -*-

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.implicitly_wait(20) # 隐性等待,最长等30秒

driver.get('https://www.baidu.com')

time.sleep(3)

driver.quit()

隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。不要当作固定等待使用,到哪都来一下隐式等待。


3.显示等待方式(WebDriverWait)

就是明确的要等待的元素在规定的时间之内都没找到,那么就抛出Exception.代码示例如下:


# -*- coding: utf-8 -*-

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

driver = webdriver.Firefox()

driver.get('https://huilansame.github.io')

WebDriverWait(driver,20,0.5).until(

EC.presence_of_element_located((By.LINK_TEXT, 'CSDN')))

print driver.find_element_by_link_text('CSDN').get_attribute('href')

driver.close()

WebDriverWait(driver,20,0.5).until(expected_conditions.presence_of_element_located(locator)),selenium中的wait模块的WebDriverWait()方法,配合until或者until_not方法,再辅助以一些判断条件,就可以构成这样一个场景:每经过多少秒就查看一次locator的元素是否可见,如果可见就停止等待,如果不可见就继续等待直到超过规定的时间后,报超时异常;当然也可以判断某元素是否在规定时间内不可见等等的各种场景吧,需要根据你自己实际的场景选择判断条件;


4.总结

隐式等待会等driver完全加载完成(如js、css等);显示等待仅仅校验需要加载的元素是否存在;强制等待字面很好理解,就不多说。大家可根据需求自行选择。下期预告:selenium多窗口切换方法。



时间 元素 方法 运行 程序 代码 场景 实际 就是 情况 方式 页面 utf-8 强制 选择 最长 事物 再次 条件 缺点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 科技创新互联网企业 四川狮子座互联网科技 栖莱科技互联网股份有限公司 科技互联网大厂 南平创想时代互联网科技有限公司 互联网媒体平台算高科技产业 特约风豹互联网科技为什么扣费 滨湖区互联网智能科技产品有哪些 深圳互联网科技的发展 广州千川互联网科技有限公司 互联网相关科技技术 卡尔迅互联网科技有限公司 下一代互联网重大应用科技园 广州燕处互联网科技有限公司 神州科技互联网有限公司 银川新华互联网科技学校是国营吗 互联网科技职业技能培训学校 科技互联网公司两年变化 互联网的黑科技实验室 鸠鸠互联网科技 深圳科技互联网 浩特互联网科技 奇士达互联网科技 青岛中康互联网医疗科技有限公司 须眉科技是互联网公司吗 江苏互联网智能科技产品出厂价 互联网界的黑科技 互联网的黑科技实验室 互联网科技创业有什么好项目
0