千家信息网

Selenium的等待方式有哪些

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、强制等待(sleep)from time import slee
千家信息网最后更新 2025年11月08日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安全错误 数据库的锁怎样保障安全 远程监测网络安全 db2数据库会被锁吗 机顶盒安装usb打印服务器 文字与图片如何存数据库 外盘期货软件开发公司哪家强 徐汇区网络技术服务值多少钱 电商系统软件开发服务方案多少钱 先进网络技术的重要性 r语言 复制一列数据库 快手不能连接服务器吗 手机淘宝提示网络安全 阿勒泰互联网科技好不好 进一步加强网络安全防护 数据库系统原理跟数据库系统概论 曲靖进销存软件开发费用 教务处数据库改成绩 网络技术和新媒体的区别 第四章数据库安全章节题目 软件开发方法发展的原因 网络安全开幕致辞 苏州学习软件开发公司有哪些 航海王热血航线有几个服务器啊 数据库原理及技术题库 大学老师又搞软件开发 山东大学网络安全教学 职场小说软件开发 服务器热量 近3年数据库流行排行情况 Linux怎么查服务器时间差 软件开发方法发展的原因
0