iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中selenium等待方式有哪些
  • 544
分享到

Python中selenium等待方式有哪些

2023-06-15 11:06:23 544人浏览 独家记忆

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

摘要

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

这篇文章主要介绍pythonselenium等待方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、为什么要使用等待?

自动化测试脚本的运行过程中,WEBdriver操作浏览器的时候,对于元素的定位是有一定的超时

时间,大致在1-3秒

如果这个时间内仍然定位不到元素,就会抛出异常,中止脚本执行

我们可以通过在脚本中设置等待的方式来避免由于网络延迟或浏览器卡顿导致的偶然失败

Python中selenium等待方式有哪些

二、常用的三种等待方式

  • 强制等待

  • 隐式等待

  • 显示等待

三、强制等待

利用time模块的sleep方法来实现,最简单粗暴的等待方法

强制等待,不管你浏览器是否加载完成,都得给我等待3秒,3秒一到,继续执行下面的代码

# -*- coding: utf-8 -*-# @Author : 程序员一凡import timefrom selenium import webdriverdriver = webdriver.Chrome()# 打开百度首页driver.get(r'https://www.baidu.com/')# 强制等待3秒time.sleep(3)driver.find_element_by_CSS_selector("#kw").send_keys("selenium")# 退出driver.quit()

弊端

不建议用这种等待方法,严重影响代码的执行速度

四、隐式等待

implicitly_wait()方法用来等待页面加载完成(直观的就是浏览器tab页上的小圈圈转完)网页加载

完成则执行下一步

隐式等待只需要声明一次,一般在打开浏览器后进行声明

声明之后对整个drvier的生命周期都有效,后面不用重复声明

# -*- coding: utf-8 -*-# @Author : 程序员一凡import timefrom selenium import webdriverdriver = webdriver.Chrome()# 打开百度首页driver.get(r'Https://www.baidu.com/')# 隐性等待5秒driver.implicitly_wait(5)driver.find_element_by_css_selector("#kw").send_keys("selenium")# 退出driver.quit()

弊端

程序会一直等待整个页面加载完成,直到超时

有时候我需要的那个元素早就加载完成了,只是页面上有个别其他元素加载特别慢,我仍要等待页

面全部加载完成才能执行下一步

五、显示等待

WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了

它主要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步

否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

显示等待必须在每个需要等待的元素前面进行声明

# 导入模块from selenium.webdriver.support.wait import WebDriverWait

四个参数

driver:浏览器驱动

timeout:等待时间

poll_frequency:检测的间隔时间,默认0.5s

ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException

expected_conditions

expected_conditions是selenium的一个模块

包含一系列可用于判断的条件

可以对网页上元素是否存在,可点击等等进行判断,一般用于断言或与WebDriverWait配合使用

from selenium.webdriver.support import expected_conditions as EC
# -*- coding: utf-8 -*-# @Author : 程序员一凡from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()driver.get('https://www.baidu.com')# 等待10s,等待过程中如果定位到元素,就直接执行后续的代码,反之等待10s后报错误信息# 验证元素是否出现,传入的参数都是元组类型的locator,如(By.ID, ‘kw')WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,"kw"))).send_keys("好好学习")

六、模块用法汇总

#判断当前页面的title是否精确等于预期,返回布尔值WebDriverWait(driver,10).until(EC.title_is("百度一下,你就知道"))#判断当前页面的title是否包含预期字符串,返回布尔值WebDriverWait(driver,10).until(EC.title_contains('new'))#判断当前页面的url是否精确等于预期,返回布尔值WebDriverWait(driver,10).until(EC.url_contains('https://www.baidu.com'))#判断当前页面的url是否包含预期字符串,返回布尔值WebDriverWait(driver,10).until(EC.url_contains('baidu'))#判断当前页面的url是否满足字符串正则表达式匹配,返回布尔值WebDriverWait(driver,10).until(EC.url_matches('.+baidu.+'))#判断元素是否出现,只要有一个元素出现,返回元素对象WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))#判断元素是否可见,返回元素对象WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(By.ID,'kw')))#判断元素是否包含指定文本,返回布尔值WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.NAME,'tj_trnews'),'新闻'))#判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去WebDriverWait(driver,10,).until(EC.frame_to_be_available_and_switch_to_it(By.xpath,'//iframe'))#判断某个元素是否可见并且是可点击的,如果是的就返回这个元素,否则返回FalseWebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME,'tj_trnews')))#判断某个元素是否被选中,一般用在下拉列表WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.xpath,'//input[@type="checkbox"]')))#判断页面上是否存在alert,如果有就切换到alert并返回alert的内容WebDriverWait(driver,10).until(EC.alert_is_present())

以上是“Python中selenium等待方式有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: Python中selenium等待方式有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • Python中selenium等待方式有哪些
    这篇文章主要介绍Python中selenium等待方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、为什么要使用等待?在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定...
    99+
    2023-06-15
  • Selenium的等待方式有哪些
    这篇文章给大家分享的是有关Selenium的等待方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、强制等待(sleep)from time import sleepslee...
    99+
    2023-06-29
  • Selenium 三种等待方式(强制等待、隐式等待、显示等待)
    1、强制等待(sleep) from time import sleep sleep(3) # 强制等待3秒 缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等...
    99+
    2024-04-02
  • Python中有哪些页面加载等待方式
    这篇文章将为大家详细讲解有关Python中有哪些页面加载等待方式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面...
    99+
    2023-06-14
  • python自动化测试selenium核心技术的等待方式有哪些
    小编给大家分享一下python自动化测试selenium核心技术的等待方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法...
    99+
    2023-06-25
  • Python页面加载的等待方式有哪些
    这篇文章主要为大家展示了Python页面加载的等待方式有哪些,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Python页面加载的等待方式有哪些”这篇文章吧。python可以做什么Python是一种...
    99+
    2023-06-06
  • python自动化测试selenium核心技术等待条件有哪些
    这篇文章主要介绍python自动化测试selenium核心技术等待条件有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Selenium中的鼠标和键盘事件被封装在ActionChains类中,使用方法:Action...
    99+
    2023-06-25
  • python等待元素出现的方法有哪些
    这篇文章主要介绍了python等待元素出现的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python等待元素出现的方法有哪些文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Oracle中有哪些等待事件
    这篇文章给大家介绍Oracle中有哪些等待事件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待...
    99+
    2024-04-02
  • python自动化测试selenium核心技术三种等待方式详解
    目录1 使用python自带模块time的sleep方式     2 隐式等待(implicitly_wait)3 显示等待(Web...
    99+
    2024-04-02
  • ORACLE常见等待事件有哪些
    这篇文章主要介绍“ORACLE常见等待事件有哪些”,在日常操作中,相信很多人在ORACLE常见等待事件有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ORACLE常见等待...
    99+
    2024-04-02
  • oracle常见的等待事件有哪些
    本篇文章给大家分享的是有关oracle常见的等待事件有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1. Buffer busy wa...
    99+
    2024-04-02
  • CSS等高布局的方式有哪些
    这篇文章给大家介绍CSS等高布局的方式有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。等高布局是指子元素在父元素中高度相等的布局方式。等高布局的实现包括伪等高和真等高,伪等高只是看...
    99+
    2024-04-02
  • Python中有哪些导包方式
    今天就跟大家聊聊有关Python中有哪些导包方式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1. 直接 import人尽皆知的方法,直接导入即可>>>...
    99+
    2023-06-16
  • Python中有哪些logging日志等级
    本篇文章给大家分享的是有关Python中有哪些logging日志等级,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开...
    99+
    2023-06-14
  • Python中Web部署方式有哪些
    这篇文章主要介绍了Python中Web部署方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 不要让服务器裸奔学过PHP的都了解,php的正式环境部署非常简单...
    99+
    2023-06-16
  • Python中快的循环方式有哪些
    这篇文章主要介绍“Python中快的循环方式有哪些”,在日常操作中,相信很多人在Python中快的循环方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中快的循环方式有哪些”的疑惑有所帮助!...
    99+
    2023-07-06
  • python中进程有哪些交流方式
    python中进程有哪些交流方式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而...
    99+
    2023-06-14
  • python中导入包的方式有哪些
    python中导入包的方式有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • Python中有哪些列表操作方式
    本篇文章给大家分享的是有关Python中有哪些列表操作方式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作