千家信息网

Selenium的等待方式有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、强制等待(sleep)from time import slee
千家信息网最后更新 2026年11月01日Selenium的等待方式有哪些

这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、强制等待(sleep)

from time import sleepsleep(3)  # 强制等待3秒

缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等因素。如果等待时间太长,容易造成时间浪费,如果等待时间太短又可能会造成在web还没有加载完所需要定位的element,而出现报错。
由于等待时间无法确定,使用太多的sleep会影响运行速度,大大地降低效率,所以建议测试中尽量少使用强制等待。

2、隐式等待 ( implicitly_wait)

# 隐式等待10sdriver.implicitly_wait(10)

简介:隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10秒内出现,则继续向下,否则抛异常。可以理解为在10秒以内,不停刷新看元素是否加载出来。

使用场景:隐式等待只需要声明一次,一般在打开浏览器后进行声明。声明之后对整个drvier的生命周期都有效,后面不用重复声明。隐式等待存在一个问题,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,仍得等到页面全部完成才能执行下一步。

3、显示等待 ( expected_conditions)

简介:显示等待是单独针对某个元素,设置一个等待时间如5秒,每隔0.5秒检查一次是否出现,如果在5秒之前任何时候出现,则继续向下,一般需要配合该类的 until() 和 until_not() 方法一起用,直到超过设置的最长时间,然后抛出超时错误 TimeoutException,以下介绍几个最常用的方法:

1. 判断element是否可见:visibility_of_element_located(locator) (可见代表element非隐藏,并且element宽和高都不等于 0)

from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.common.by import By# 示例target = EC.visibility_of_element_located(By.ID,'user') # 配合until()使用(等待元素可见)# 5表示 最长超时时间,默认以秒为单位; 1表示检测的间隔步长,在等待期间,每隔一定时间(默认0.5秒),调用until或until_not里的方法,直到它返回True或False.WebDriverWait(driver, 5, 1).until(EC.visibility_of_element_located(By.ID,'user'))# 配合until_not()使用(等待元素不可见)WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user')) # 在类中封装为一个函数    def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None):        """        :param loc:元素定位表达;元组类型,表达方式(元素定位类型,元素定位方法),示例:(By.ID, "kw")        :param timeout:超时时间        :param poll_frequency:轮询频率        :param model:等待失败时,截图操作,图片文件中需要表达的功能标注        :return:None        """        self.logger.info(f'等待"{model}"元素,定位方式:{loc}')        try:            start = datetime.now()            WebDriverWait(self.driver, timeout, poll_frequency).until(EC.visibility_of_element_located(loc))            end = datetime.now()            self.logger.info(f'等待"{model}"时长:{end - start}')        except TimeoutException:            self.logger.exception(f'等待"{model}"元素失败,定位方式:{loc}')            # 截图            self.save_webImgs(f"等待元素[{model}]出现异常")            raise

2. 判断某个element是否被加载到dom树:presence_of_element_located(locator) (并不代表该element一定可见)

from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By target = EC.presence_of_element_located(By.ID,'user')

3. 判断某个element中是否可见并且可点击:element_to_be_clickable(locator)

from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By target = EC.element_to_be_clickable(By.ID,'user')

4. 判断某个element是否被选中:element_to_be_selected(element) (一般用在下拉列表)

from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By element = driver.find_element_by_class_name('selector')EC.element_to_be_selected(element)

感谢各位的阅读!关于"Selenium的等待方式有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

元素 时间 定位 方式 方法 页面 强制 最长 代表 内容 截图 更多 浏览器 示例 简介 篇文章 类型 速度 测试 浏览 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 互联网是不是新科技 广西互联网科技公司 互联网科技宣传片 国外互联网科技网站 互联网养老 桔豆科技 互联网科技公司做什么 镁科技互联网资讯平台 联恩商钥互联网科技有限公司 互联网科技创新企业排名 哈尔滨秒房互联网科技有限公司 西藏七维空间互联网科技有限公司 汽车互联网创新科技园 华夏互联网科技业 互联网科技人工智能实验室 世界互联网科技成果奖 保山互联网科技靠谱吗 科技和互联网行业的特点 互联网科技创业有什么好项目 山东亿川互联网科技有限责任公司 中关村互联网 科技集团 互联网科技工作委员会副主任毛军 远信互联网科技 科技创新互联网企业 互联网科技logo 碳银互联网科技有限公司 青岛中康互联网医疗科技有限公司 中科明德北京互联网科技 众安科技工业互联网合作 银川新华互联网科技学校招聘
0