Selenium三种等待方式的使用

这篇文章介绍了针对软件测试面试的刷题小程序,包含各类基础和高级测试题目,如自动化测试、大厂真题,以及Selenium中的显式等待和隐式等待技巧。通过学习和实践,考生可提升面试准备并增加就业竞争力。

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-优快云博客文章浏览阅读3k次,点赞86次,收藏13次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.youkuaiyun.com/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

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

显式等待(Explicit Waits)

隐式等待(Implicit Waits)

时间等待(Sleep)

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

  1. 显式等待(Explicit Waits)

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

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 实例生命周期中只设置一次。

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 测试,因为它不检查页面元素的状态,只是简单地让程序等待。

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 秒,那么程序可能会因为找不到元素而抛出异常。因此,通常建议使用显式等待或隐式等待来替代时间等待。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

### Selenium 中的三种等待方式 #### 1. **强制等待** 强制等待是指通过 `time.sleep()` 方法让程序暂停指定的时间后再继续运行。这种方式简单粗暴,适用于不确定页面加载时间的情况。 ```python import time time.sleep(5) # 让程序暂停5秒钟 ``` 尽管这种方法容易实现,但它存在明显的缺点:无论目标元素是否已经加载完成,都会严格按照设定的时间延迟执行后续操作[^4]。 --- #### 2. **隐式等待** 隐式等待是一种全局性的等待机制,在 WebDriver 初始化之后调用 `implicitly_wait(seconds)` 设置一个最长等待时间。一旦设置了隐式等待,WebDriver 将会在定位不到某个元素时自动轮询 DOM 树,直到超时为止。 示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) # 隐式等待10秒 driver.get('https://example.com') ``` 需要注意的是,隐式等待仅对查找单个元素有效,对于多个元素的查找不会生效。另外,隐式等待无法精确控制何时停止等待,可能会导致效率低下[^5]。 --- #### 3. **显式等待** 显式等待允许开发者自定义更精细的等待逻辑,通常与 `WebDriverWait` 和 `expected_conditions` 结合使用。它可以针对特定条件进行动态监测,只有当满足条件时才会结束等待并继续执行下一条语句。 以下是常见的几种等待条件以及对应的代码示例: - 等待某元素出现(但不一定是可见状态): ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, 'myElement'))) ``` - 等待某元素完全可见: ```python element = wait.until(EC.visibility_of_element_located((By.ID, 'myElement'))) ``` - 等待某元素变为可点击状态: ```python element = wait.until(EC.element_to_be_clickable((By.ID, 'myButton'))) ``` 显式等待的核心优势在于其灵活性——可以根据实际需求调整等待策略,从而提高脚本性能和稳定性[^2][^3]。 --- ### 总结对比表 | 特性 | 强制等待 | 隐式等待 | 显式等待 | |-----------------|------------------|--------------------|-------------------| | 实现难度 | 极低 | 较低 | 较高 | | 效率 | 最差 | 次之 | 最优 | | 自定义能力 | 完全无 | 可配置最大时限 | 支持多种复杂场景 | | 推荐适用范围 | 测试环境不稳定 | 页面结构较固定 | 动态交互较多 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值