iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Selenium 三种等待方式(强制等待、隐式等待、显示等待)
  • 427
分享到

Selenium 三种等待方式(强制等待、隐式等待、显示等待)

2024-04-02 19:04:59 427人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1、强制等待(sleep) from time import sleep sleep(3) # 强制等待3秒 缺点:由于WEB加载的速度取决于测试的硬件、网速、服务器的响应时间等

1、强制等待(sleep)

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

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

2、隐式等待 ( implicitly_wait)

# 隐式等待10s
driver.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 EC
from selenium.webdriver.support.wait import WebDriverWait
from 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 EC
from 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 EC
from 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 EC
from selenium.webdriver.common.by import By
 
element = driver.find_element_by_class_name('selector')
EC.element_to_be_selected(element)

到此这篇关于Selenium 三种等待方式(强制等待、隐式等待、显示等待)的文章就介绍到这了,更多相关Selenium 等待方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Selenium 三种等待方式(强制等待、隐式等待、显示等待)

本文链接: https://www.lsjlt.com/news/139159.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Selenium 三种等待方式(强制等待、隐式等待、显示等待)
    1、强制等待(sleep) from time import sleep sleep(3) # 强制等待3秒 缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等...
    99+
    2024-04-02
  • Python selenium的三种等待
    1、第一种是强制等待,也就是说,无论怎么样都要进行调用简单代码如下:from time import sleep sleep(3)#强制等待3秒2、第二种是隐形等待,隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一...
    99+
    2023-01-31
    三种 Python selenium
  • Selenium的等待方式有哪些
    这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、强制等待(sleep)from time import sleepslee...
    99+
    2023-06-29
  • Python中selenium等待方式有哪些
    这篇文章主要介绍Python中selenium等待方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、为什么要使用等待?在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定...
    99+
    2023-06-15
  • python里三种等待元素的方法
    在做web或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了。那么我可以用等待 元素加载完成后再执行查找元素的code。 Python里有三种等待的方式:...
    99+
    2023-01-31
    三种 元素 方法
  • jQuery中EasyUI页面加载等待及页面等待层的示例分析
    这篇文章主要为大家展示了“jQuery中EasyUI页面加载等待及页面等待层的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery中EasyUI页...
    99+
    2024-04-02
  • python自动化测试selenium核心技术三种等待方式详解
    目录1 使用python自带模块time的sleep方式     2 隐式等待(implicitly_wait)3 显示等待(Web...
    99+
    2024-04-02
  • Java+Selenium设置元素等待的方法详解
    目录简介设置元素等待显式等待隐式等待强制等待总结简介 本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要...
    99+
    2023-01-09
    Java Selenium设置元素等待 Java Selenium 元素等待 Java Selenium 元素
  • Python中有哪些页面加载等待方式
    这篇文章将为大家详细讲解有关Python中有哪些页面加载等待方式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面...
    99+
    2023-06-14
  • 关闭Win7会提示等待程序关闭 取消Win7关闭电脑等待时间方法
      你在关闭Win7电脑时,应该经常系统会提醒等待程序关闭,实际上,你发现自己把能关闭的都已经正常关闭了。这是由于Win7的设置造成,它会延长电脑的关闭时间,十分耽误下班时间。本次小编就为大家演示加速关闭服务时间操作教程...
    99+
    2023-06-06
    Win7 关闭电脑 等待时间 时间 电脑 等待 方法
  • Java的等待通知机制是什么
    这篇“Java的等待通知机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java的等待通知机制是什么”文章吧。Jav...
    99+
    2023-06-03
  • C/C++ 控制台等待指令解析
    目录控制台等待指令Ctrl + F5C versionC++ version让控制台程序停下来--实现暂停功能针对Microsoft针对Linux控制台等待指令 C/C++ 程序执行...
    99+
    2024-04-02
  • js中等待Promises的示例分析
    这篇文章给大家分享的是有关js中等待Promises的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。等待 Promises在某些情况下,我们需要等待多个Promise结束,这里,我们使用Promise.a...
    99+
    2023-06-27
  • Python页面加载的等待方式有哪些
    这篇文章主要为大家展示了Python页面加载的等待方式有哪些,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Python页面加载的等待方式有哪些”这篇文章吧。python可以做什么Python是一种...
    99+
    2023-06-06
  • jquery实现加载等待效果示例
    复制代码 代码如下: var dates = this.options.form.getWidgetByName("dates").getValue(); $.ajax({ url:...
    99+
    2022-11-15
    加载等待
  • Linux进程控制【创建、终止、等待】
    ✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Good judgment comes fro...
    99+
    2023-08-20
    linux 运维 服务器 进程 云原生
  • 减少win7开机等待和关机等待时间加快开机关机速度的方法
      在xp系统中,如果说到减少系统开机速度和加快系统关机速度的,你肯定会有很in7系统不一定能用。下面小编分享下win7系统中有用的减少关机和开机速度的方法 。   1、加快开机速度   点击开始 - 在"搜索...
    99+
    2023-06-01
    开机等待时间 开机速度 关机速度 时间 等待 速度 关机 方法
  • java并发等待条件的示例分析
    这篇文章将为大家详细讲解有关java并发等待条件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言前面介绍了排它锁,共享锁的实现机制,本篇继续学习AQS中的另外一个内容-Condition。想必...
    99+
    2023-05-30
    java
  • Redis怎么实现分布式锁和等待序列
    这篇文章主要介绍了Redis怎么实现分布式锁和等待序列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在集群下,经常会因为同时处理发生资源争抢...
    99+
    2024-04-02
  • python自动化测试selenium核心技术的等待方式有哪些
    小编给大家分享一下python自动化测试selenium核心技术的等待方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作