我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Selenium的等待方式有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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,以下介绍几个最常用的方法:

判断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

判断某个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')

判断某个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')

判断某个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的等待方式有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Selenium的等待方式有哪些

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

下载Word文档

猜你喜欢

Selenium的等待方式有哪些

这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、强制等待(sleep)from time import sleepsleep(3) # 强制等待3秒缺
2023-06-29

Python中selenium等待方式有哪些

这篇文章主要介绍Python中selenium等待方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、为什么要使用等待?在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定
2023-06-15

解读Python selenium的等待方式

发现太多人不会用等待了,今天实在是忍不住要给大家讲讲等待的必要性。 很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,
2022-06-04

python自动化测试selenium核心技术的等待方式有哪些

小编给大家分享一下python自动化测试selenium核心技术的等待方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法
2023-06-25

Python selenium 三种等待方式解读

发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性。 很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级
2022-06-04

Python页面加载的等待方式有哪些

这篇文章主要为大家展示了Python页面加载的等待方式有哪些,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Python页面加载的等待方式有哪些”这篇文章吧。python可以做什么Python是一种
2023-06-06

Python中有哪些页面加载等待方式

这篇文章将为大家详细讲解有关Python中有哪些页面加载等待方式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面
2023-06-14

Python selenium 三种等待方式详解(必会)

很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽
2022-06-04

Python selenium的这三种等待方式一定要会!

目录一、为什么要使用等待?二、常用的三种等待方式三、强制等待四、隐式等待五、显示等待六、模块用法汇总一、为什么要使用等待? 在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超时 时间,大致在1-3秒
2022-06-02

python自动化测试selenium核心技术等待条件有哪些

这篇文章主要介绍python自动化测试selenium核心技术等待条件有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Selenium中的鼠标和键盘事件被封装在ActionChains类中,使用方法:Action
2023-06-25

python Selenium等待元素出现的具体方法

有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现。anonemail 类出现的时间各不相同。因此,我必须使用 sleep 直到元素出现。 我想等到课程出现而不是使用睡眠。我听说过等待命令,但我不知道如
2022-06-02

Java+Selenium设置元素等待的方法详解

本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要设置元素等待,等待元素加载完,再操作,感兴趣的可以了解一下
2023-01-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录