软件测试|selenium不同等待方式如何使用,你都会了吗?

本文介绍了Selenium中三种等待机制:时间等待、隐式等待和显式等待。时间等待不推荐,隐式等待提高稳定性但可能延长执行时间,显式等待更灵活,可根据条件定制。

在这里插入图片描述

简介

Selenium 是一个用于自动化测试的工具,它常被用于模拟用户在浏览器中的操作。在进行网页自动化测试时,等待是一个关键的概念,因为网页上的某些元素可能不会立即加载或发生变化。为了确保我们在进行操作之前等待必要的元素状态,Selenium 提供了三种主要的等待方式:显式等待、隐式等待和时间等待。以下是对这三种等待方式的详细说明及示例代码。

强制等待(Sleep)

时间等待是通过 time.sleep() 方法在执行期间暂停脚本的执行,等待指定的时间。这种等待方式通常不建议使用,因为它是一种硬性等待,不考虑元素是否已经准备好。示例代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化浏览器驱动
driver = webdriver.Chrome()

# 打开网页
driver.get("https://example.com")

# 等待 5 秒
time.sleep(5)

# 查找元素
element = driver.find_element(By.ID, "example-id")

# 打印元素文本
print("Element text is: {}".format(element.text))

# 关闭浏览器
driver.quit()

在上述代码中,我们使用 time.sleep(5) 暂停脚本的执行,等待 5 秒后再继续执行。

隐式等待(Implicit Wait)

隐式等待是在查找元素时,如果找不到立即返回,但在指定的时间内尝试查找,如果在规定时间内找到元素就继续执行,否则抛出 NoSuchElementException 异常。这样可以在一定程度上提高脚本的稳定性。示例代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化浏览器驱动
driver = webdriver.Chrome()

# 设置隐式等待时间为 10 秒
driver.implicitly_wait(10)

# 打开网页
driver.get("https://example.com")

# 查找元素
element = driver.find_element(By.ID, "example-id")

# 打印元素文本
print("Element text is: {}".format(element.text))

# 关闭浏览器
driver.quit()

在上述代码中,我们使用 implicitly_wait 方法设置隐式等待时间为 10 秒,当查找元素时,如果找不到会等待最多 10 秒。

显式等待(Explicit Wait)

显式等待是在特定条件满足之前一直等待的方式。它使用 ExpectedConditions 类来定义等待的条件。这种等待方式更加灵活,可以等待特定的条件发生,比如元素可见、元素可点击等。

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("https://example.com")

# 显式等待,等待页面标题包含指定文本
try:
    element = WebDriverWait(driver, 10).until(
        EC.title_contains("Example Domain")
    )
    print("Page title is: {}".format(driver.title))
finally:
    driver.quit()

在上述代码中,我们使用 WebDriverWait 类等待页面标题包含指定文本 “Example Domain”,最长等待时间为 10 秒。

总结

在 Selenium 中,等待是自动化测试中的关键概念。显式等待、隐式等待和时间等待各有优劣,开发人员可以根据具体需求选择合适的等待方式。显式等待相对更为灵活,更具可控性,推荐在大多数情况下使用。隐式等待可以提高脚本的稳定性,但也可能在不必要的时候增加脚本执行时间。强制等待则是一种简单但不推荐的等待方式,因为它没有考虑到页面元素是否真正准备好。

获取更多技术资料,请点击!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值