九、设置元素等待

2023-05-16

转载于:http://www.testclass.net/selenium_python/element-wait

WebDriver提供了两种类型的等待:显式等待隐式等待

显式等待


显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver, 5, 0.5).until(
                      EC.presence_of_element_located((By.ID, "kw"))
                      )
element.send_keys('selenium')
driver.quit()

WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。具体格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
  • driver :浏览器驱动。

  • timeout :最长超时时间,默认以秒为单位。

  • poll_frequency :检测的间隔(步长)时间,默认为0.5S。

  • ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常。

WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。

  • until(method, message=‘’)

调用该方法提供的驱动程序作为一个参数,直到返回值为True。

  • until_not(method, message=‘’)

调用该方法提供的驱动程序作为一个参数,直到返回值为False。

在本例中,通过as关键字将expected_conditions 重命名为EC,并调用presence_of_element_located()方法判断元素是否存在。

隐式等待


WebDriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0。它的用法相对来说要简单得多。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import ctime

driver = webdriver.Firefox()

# 设置隐式等待为10秒
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")

try:
    print(ctime())
    driver.find_element_by_id("kw22").send_keys('selenium')
except NoSuchElementException as e:
    print(e)
finally:
    print(ctime())
    driver.quit()

implicitly_wait() 默认参数的单位为秒,本例中设置等待时长为10秒。首先这10秒并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。假设在第6秒定位到了元素则继续执行,若直到超出设置时长(10秒)还没有定位到元素,则抛出异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

九、设置元素等待 的相关文章

  • 【Tars】腾讯微服务框架Tars介绍

    目录 1 介绍2 设计思路3 整体架构4 平台特性 1 介绍 Tars是 基于名字服务 使用Tars协议 的高性能 RPC 开发框架 xff0c 同时配套一体化的 服务治理平台 xff0c 帮助个人或者企业快速的以微服务的方式构建自己稳定可
  • C++11常用新特性快速一览

    最近工作中 xff0c 遇到一些问题 xff0c 使用C 43 43 11实现起来会更加方便 xff0c 而线上的生产环境还不支持C 43 43 11 xff0c 于是决定新年开工后 xff0c 在组内把C 43 43 11推广开来 xff
  • 语法糖:萃取lambda表达式

    背景 现在手头主负责的服务代码 xff0c 基本上都用C 43 43 11来开发了 xff0c 异步编程使用的是TAF的future promise future的then函数 xff0c 接受的是一个Callback对象 xff0c 该对
  • hashmap C++实现分析

    一 简介 Map 是 Key Value 对映射的抽象接口 xff0c 该映射不包括重复的键 xff0c 即一个键对应一个值 在HashMap中 xff0c 其会根据hash算法来计算key value的存储位置并进行快速存取 本文介绍的C
  • SpringMVC(04) -- SpringMVC获取请求参数

    SpringMVC学习笔记 源码地址 4 1 xff09 通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参 xff0c 此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的
  • docker删除所有容器/镜像

    1 想要删除容器 xff0c 则要先停止所有容器 xff08 当然 xff0c 也可以加 f强制删除 xff0c 但是不推荐 xff09 xff1a docker stop docker ps a q 2 删除所有容器 docker rm
  • php中常见的几种设计模式

    1 单例模式 单例模式可以说是面向对象语言里最常用 也是最简单的一种模式 单例就是单个实例 xff0c 单个对象的意思 xff0c 就是说我们去实例化一个类的时候 xff0c 不管调用多少次 xff0c 都永远只有一个实例 不会有多个 xf
  • Ubuntu查看文件大小或文件夹大小

    一 查看文件大小 查看文件大小的命令 xff1a ls l filename 会在终端输出 xff1a rw r r 1 root root 2147483648 Mar 5 09 39 filetemp0606 其中数字214748364
  • Git 遇到了 The remote end hung up unexpectedly -- early EOF -- index-pack failed 问题

    Git 遇到了 The remote end hung up unexpectedly early EOF index pack failed 问题 今天想 clone 在 gitlab 的 repo xff0c 结果在 clone 的过程
  • 【Docker】在Docker容器中运行VScode

    原文链接 xff1a 容器中的远程开发 Prerequisites VScodeDocker Desktop Steps 打开Docker xff1a 在Windows下出现鲸鱼图标且图标静止则打开成功 xff1b 检查Docker xff
  • github 常用命令汇总 更新代码和子模块的代码

    针对PX4代码 xff0c 在github库中建立了Firmware的分支 xff0c ADRC branch xff0c 用于存放修改的代码 xff0c 其中涉及了子模块ecl的修改 代码下载 xff1a git clone https
  • C、C++多线程编程

    本文的笔记来自于b站视频的爱编程的大丙 xff0c 博客链接 xff1a https subingwen cn xff0c 有做了相应的补充 xff01 一 线程概述 进程对应的虚拟地址空间的各个分区如图 xff1a 每个进程的虚拟地址空间
  • 【x86架构】中断基础介绍

    说明 本文讲的是Intel的x86架构下的中断 参考的文档主要如下所示 xff1a 64 ia 32 architectures software developer manual pdf PCI Express体系结构导读 x86 x64
  • Java中的this有哪四种用法

    JAVA中的this是一个非常重要的模块 在编程中有非常重要的地位 擅长用this的人常常可以使程序更加简洁和方便 今天来了解一下this的用法 java中this关键字必须放在非静态方法里面 xff0c this关键字代表自身 xff0c
  • 线程不执行delegate,防止线程结束

    如果我们将NSURLConnection放在线程中 xff0c 是不是delegate方法总是不会触发 xff1f 原因就是由于线程结束了 解决方法就是让线程在数据返回之前不结束 1 可以在线程中加一个timer防止结束 xff0c 这方法
  • vscode 配置 git (配置、暂存、推送、拉取、免密)

    前些天发现了一个巨牛的人工智能学习网站 xff0c 通俗易懂 xff0c 风趣幽默 xff0c 忍不住分享一下给大家 点击跳转到教程 vscode 中对 git 进行了集成 xff0c 很多操作只需点击就能操作 xff0c 无需写一些 gi
  • 计算机视觉3 SIFT特征提取与全景图像拼接

    1 原理 检测并提取图像的特征和关键点匹配两个图像之间的描述符使用RANSAC算法使用我们匹配的特征向量估计单应矩阵拼接图像 步骤一和步骤二过程是运用SIFT局部描述算子检测图像中的关键点和特征 xff0c SIFT特征是基于物体上的一些局
  • 高超声速滑翔飞行器摆动式机动突防弹道设计(源代码)

    谢愈 xff0c 刘鲁华等 xff0c 高超声速滑翔飞行器摆动式机动突防弹道设计 xff0c 航空学报 xff0c 2011 算法有两个控制量 xff1a 攻角和倾侧角 xff0c 攻角只是起辅助作用 xff0c 主要还是倾侧角的设计 由于

随机推荐

  • 4轴开发之串级PID调试技巧

    欢迎查看我原始的出处 xff1a http lindue com 17868 html 调节串环 PID 大概过程 xff08 注意修正反向 xff09 1 估计大概的起飞油门 2 调整角速度内环参数 3 将角度外环加上 xff0c 调整外
  • 2013第四届蓝桥杯省赛C++C组【第四题:幻方填空】

    第四题 标题 xff1a 幻方填空 题目描述 xff1a 幻方是把一些数字填写在方阵中 xff0c 使得行 列 两条对角线的数字之和都相等 欧洲最著名的幻方是德国数学家 画家迪勒创作的版画 忧郁 中给出的一个4阶幻方 他把1 2 3 16
  • SLAM 02.整体框架

    上一篇文章是从人类角度来分析SLAM技术 xff0c 其实任何计算机技术的实现都是从人类思维出发去解决实际问题 本篇从技术实现角度讲解SLAM的实现框架 SLAM在自主导航中的位置 在整个移动机器人自主导航 xff08 包括自动驾驶 xff
  • SLAM 04.视觉里程计-1-相机模型

    相机模型是理解视觉里程计之前的基础 本文主要是对高翔博士的 SLAM十四讲 的总结 视觉里程计就是要根据相机拍摄的多幅图像估计出机器人当前的位置 xff0c 然后再重建地图 单目相机 相机模型里涉及到如下几个坐标 xff1a 空间坐标 物理
  • 第n次安装ros遇到的第n个问题

    自从入坑ros以来 xff0c 在导师公司的要求下 xff0c 我在无数的台式机 xff0c 工控机 xff0c 笔记本里刷linux系统 xff0c 搭ros环境 按照百度的安装教程 xff1a 换源 但是每次都能遇到不同稀奇古怪的问题
  • c/c++常用资源 c/c++书籍下载

    c c 43 43 常用资源 aix在线文档 xff1a http publib16 boulder ibm com cgi bin ds rslt 1 各种c c 43 43 编译器 http www clipx net norton p
  • 关于Android应用支持IPV6

    今天看了一些关于Android应用关于支持IPV6的问题 xff0c 简单记录 ipv从地址来说比v4多了 xff0c 长度更长 1 正常来说OKHttp xff0c XUtils等上层网络框架是支持ipv6的 但是如果你的应用中用到了so
  • 面试 | 推荐几个程序员刷题的网站!面试必备!!!

    经常有朋友问我 xff0c 有没有在线刷题的网站推荐 为什么要用线上刷题呢 xff1f 确实有一定好处 xff0c 线上的笔试题有自动更新 xff0c 可以记录你刷题的记录 xff0c 更好的来统计你的错误率和错误题型 最主要的是方便 xf
  • Docker镜像构建过程记录

    Docker镜像构建过程记录 为公司一个java工程 xff0c 构建一个docker镜像 xff0c 并将镜像存入私有库中 记录一下操作过程 1 打包 这是一个spring boot的maven工程 xff0c 打包命令就很简单了 spa
  • 直流可调稳压电源的Proteus仿真设计(附仿真+论文等资料)

    注意 xff1a 全套资源获取 xff0c 请见文末说明 设计要求 1 输出电压在1 25V 37V可调 xff1b 2 最大输出电流为1 5A xff1b 3 电压调整精度达0 1 xff1b 摘要 直流稳压电源由电源变换器 桥式整流滤波
  • GPT PMBR size mismatch 解决方法

    https blog csdn net agave7 article details 83177858 root 64 debian home liyezhen src sbk debian 32bit build product tool
  • react router路由传参三种方式

    react router路由传参三种方式 xff1a 通过通配符传参 query传参和state传参 1 通配符传参 Route定义方式 xff1a lt Route path 61 39 path name 39 component 61
  • ROS与GAZEBO实时硬件仿真(4)——深入理解与总结

    声明 xff1a 本博客是对博主无人的回忆所写的ROS与GAZEBO实时硬件仿真系列文章的自我理解与总结 xff0c 所写内容是基于该博主的三篇博文的 xff0c 如果有幸被人参考 xff0c 建议先看完该博主的三篇文章再来看这篇文章 三篇
  • 最短路径算法之AStar算法(二) A Star算法需要注意的问题

    上篇文章中证明了A Star算法 xff0c 下面 xff0c 我们来看看该算法中需要注意的几个问题 1 xff0c 在扩展节点M时 xff0c 计算了其后继节点N的F值 xff0c 发现N节点已经在open链表中 xff0c 并且新的F值
  • yolo论文中IOU/AP/MAP/NMS概念详解

    之前在只看了一遍吴恩达神经网络下写了一篇Darknet yolov2的综述 xff0c 最近接着往下学时发现很多基础的概念不是很懂 xff0c 所以这篇解决一下寸疑问题 1 卷积滑动窗口 滑动窗口大家都了解的 xff0c 从图片的左上角开始
  • ANO匿名飞控STM32代码解读(一)任务调度——Ano_Scheduler.c

    我所学习的代码是匿名飞控使用STM32芯片ANO PioneerPro 20190825的版本 匿名飞控的整体代码是跑裸机的 xff0c 任务调度是用STM32F4芯片中的系统时钟计时 xff0c 做了一个任务调度系统 xff0c 举个例子
  • 地面坐标系与机体坐标系的转换和欧拉角

    大家在入门四旋翼飞行器数学模型时第一个遇到的就是坐标系的转换 这篇文章用尽量浅显的语言为大家讲解坐标系的转换的欧拉角 机体坐标系 原点O取在飞机质心处 Xb轴指向机头 Yb轴指向机身右方 Zb指向机身下方 地面坐标系 在地面上选一点Og x
  • 飞桨AIStudio基础操作

    目录 执行和调试 多文件代码编辑 上传Notebook Notebook快捷键 Notebook中使用Shell命令 查看文件夹目录 使用pip来安装自己需要的package 但不支持apt get 查看当前环境中安装的package 持久
  • VSCode与CMake搭配使用之基本配置

    1 首先安装VSCode插件CMake和CMake Tools CMake插件主要功能是CMake语法高亮 自动补全CMake Tools的功能主要是结合VSCode IDE使用CMake这个工具 xff0c 比如生成CMake项目 构建C
  • 九、设置元素等待

    转载于 xff1a http www testclass net selenium python element wait WebDriver提供了两种类型的等待 xff1a 显式等待和隐式等待 显式等待 显式等待使WebdDriver等待