Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium三种等待方式的使用

Selenium三种等待方式的使用

作者头像
孟船长
发布于 2024-04-23 06:34:40
发布于 2024-04-23 06:34:40
52400
代码可运行
举报
运行总次数:0
代码可运行

Selenium 提供了三种等待方式来确保在继续执行代码之前,页面元素已经加载并可用。这三种等待方式分别是:

显式等待(Explicit Waits)

隐式等待(Implicit Waits)

时间等待(Sleep)

下面是每种等待方式的代码示例:

  1. 显式等待(Explicit Waits)

显式等待是指代码会等待某个特定条件发生后再继续执行,最常用的是等待某个元素出现。显式等待需要配合 WebDriverWait 和 expected_conditions 一起使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.Chrome()  
driver.get("http://example.com")  
  
try:  
    element = WebDriverWait(driver, 10).until(  
        EC.visibility_of_element_located((By.ID, "myElement"))  
finally:  
    driver.quit()

在这个例子中,WebDriverWait 会等待最多 10 秒,直到 id 为 "myElement" 的元素可见。如果在这个时间内元素变得可见,那么它将继续执行。如果超时(在这个例子中是 10 秒),那么会抛出一个 TimeoutException。

  1. 隐式等待(Implicit Waits)

隐式等待是告诉 WebDriver 在查找元素时,如果元素没有立即出现,那么等待一段时间再查找。隐式等待在整个 WebDriver 实例生命周期中只设置一次。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver  
  
driver = webdriver.Chrome()  
driver.implicitly_wait(10)  # 设置隐式等待为 10 秒  
driver.get("http://example.com")  
  
# 接下来查找元素的操作,都会等待最多 10 秒  
element = driver.find_element_by_id("myElement")  
  
driver.quit()

在这个例子中,设置隐式等待为 10 秒。这意味着每次使用 WebDriver 的查找元素方法(如 find_element_by_id,find_elements_by_class_name 等)时,如果元素没有立即出现,WebDriver 会等待最多 10 秒。

  1. 时间等待(Sleep)

时间等待是最简单的等待方式,它只是让程序暂停执行一段时间。这种方式并不推荐用于 Web 测试,因为它不检查页面元素的状态,只是简单地让程序等待。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time  
from selenium import webdriver  
  
driver = webdriver.Chrome()  
driver.get("http://example.com")  
  
time.sleep(10)  # 程序暂停 10 秒  
  
element = driver.find_element_by_id("myElement")  
  
driver.quit()

在这个例子中,程序会暂停 10 秒,然后再继续执行。这种方式的问题在于,如果页面加载速度快于 10 秒,那么程序就会浪费时间等待;如果页面加载速度慢于 10 秒,那么程序可能会因为找不到元素而抛出异常。因此,通常建议使用显式等待或隐式等待来替代时间等待。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux 安装jdk1.8
Linux安装jdk1.8有两种方式,一种是通过执行安装脚本,一步安装,可以到这里下载:https://download.csdn.net/download/zjhcxdj/11584336,里面包含安装脚本和jdk1.8的安装包。另一种是手动安装。两种方式原理都一样。下面讲一下如何手动安装。
芥末鱿鱼
2022/05/05
6.9K0
Linux 安装jdk1.8
在Linux上面装jdk, Tomcat软件,一步一步带你安装
以上的local文件夹下就有一个jdk的文件夹,里面就是jdk的东西了,我们就解压成功了
一写代码就开心
2021/08/05
1.3K0
在Linux上面装jdk, Tomcat软件,一步一步带你安装
Ubuntu 16.04安装JDK并配置环境变量
7.但还没结束,以前按照其他人写的文章发现每次重启后就用不了了,所以还需要配置所有用户的环境变量
qubianzhong
2019/07/01
1.3K0
Ubuntu 16.04安装JDK并配置环境变量
Linux(Centos7)安装jdk1.8
jdk下载:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
鱼找水需要时间
2023/02/16
2.4K0
Linux(Centos7)安装jdk1.8
centos下面的jdk17的安装配置
ls -l / :以列表的方式显示这个根目录里面的内容;—等效于这个ll -l命令
阑梦清川
2025/02/24
9120
centos下面的jdk17的安装配置
NB: JAVA_HOME should point to a JDK not a JRE
在Centos 6.10上部署项目前,使用yum安装jdk,配置环境变量,java -version正常输出,java -jar xx.jar能正常运行Spring Boot项目。但安装Maven并配置后报错。
geekfly
2022/04/24
4.1K0
NB: JAVA_HOME should point to a JDK not a JRE
在虚拟机CentOS中安装jdk
在虚拟机的centos中安装Jdk主要分为三步,第一步上传jdk文件到centos中,第二步解压jdk文件,第三步配置环境变量。
愷龍
2024/08/15
6820
在虚拟机CentOS中安装jdk
[991]linux下安装java
进入页面后下载64位的包,jdk-8u181-linux-x64.tar.gz与jdk-8u181-linux-x64.rpm都可以,下面会分别介绍两种包的安装方法,选择其中一种进行安装即可。
周小董
2021/05/27
6570
Linux搭建环境的详细步骤(一)
服务器上Linux的登录账号一般都是root,密码是你自己设置的密码,如果是Liunx在虚拟机上,那账号和密码就是你的登录的账号和密码。
测试小兵
2019/08/30
5.4K1
Linux搭建环境的详细步骤(一)
Centos 7.4 安装单机版 Spark
由于个人学习需要,所以来研究一下怎么安装 Spark,但是由于个人的经济资源有限,所以还没有上集群,这里先试一下单机版的 Spark。后期有扩展的话,同步更新集群安装教程。
拾贰
2019/08/28
2.6K0
Centos 7.4 安装单机版 Spark
CentOS7安装java8和java11,实现版本共存且自由切换
链接:https://pan.baidu.com/s/1LszbdHk31yqIIHjfh_SOlA
郑郑SunUp
2025/01/01
6290
【Linux】安装JDK详细步骤
由于上述在进行文件上传时,选择的上传目录为根目录 /,上传完毕后,我们执行指令 cd / 切换到
陶然同学
2023/03/02
7.6K0
【Linux】安装JDK详细步骤
Linux中安装jdk
这篇博客就以jdk-8u311-linux-x64.tar.gz为例, 你下载的文件可能不是这个版本,这没关系,只要后缀(.tar.gz)一致即可。  
叫我阿杰好了
2022/11/07
4.1K0
Linux中安装jdk
CentOS7(Linux)源码安装JDK
Java工作者第一步一定是安装JDK了,可是还有小伙伴不会在Linux上安装JDK,毕竟我们开发的项目都是要在服务器上运行的,今天就来讲讲如何在CentOS7环境使用源码进行安装JDK。
一个正经的程序员
2022/04/11
7470
CentOS7(Linux)源码安装JDK
JDK开发环境搭建及环境变量配置
根据系统版本下载tar.gz文件,服务器一般是64位的 jdk-8u121-linux-x64.tar.gz 、jdk-8u121-linux-i586.tar.gz 下载完成使用SSH或者winscp上传到服务器。
Javen
2018/08/21
8820
JDK开发环境搭建及环境变量配置
Linux 配置Java环境(图文详细)
指令 rpm -e --nodeps + jdk名字表示强制删除该jdk,如图
全栈程序员站长
2022/08/23
6.2K0
Linux 配置Java环境(图文详细)
Ubuntu16 安装Hadoop 3.2.0 记录【全网最详细,最全,多图】
我想使用Xshell连接Vm里面的虚拟机,所以先ifconfig查询IP,通过Xshell登录。
无道
2019/11/13
1.3K0
Ubuntu16 安装Hadoop 3.2.0 记录【全网最详细,最全,多图】
Ubuntu 14.04安装JDK1.8.0_25与配置环境变量
首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,我下载jdk-8u25-linux-x64.tar.gz,下载到主目录
bear_fish
2018/09/20
1.1K0
Ubuntu 14.04安装JDK1.8.0_25与配置环境变量
centos7配置JDK
列举匹配已安装的java的软件包:yum list installed | grep java
孙晨c
2019/09/10
1.4K0
环境搭建-JDK
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
wangmcn
2022/07/26
7490
环境搭建-JDK
相关推荐
Linux 安装jdk1.8
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验