You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pytest中断言Web元素?UI测试新手技术求助

嘿,别慌!我来帮你把这个问题拆解清楚,从需要的库到断言的写法都给你讲明白~

首先:你需要导入的库

既然是用Pytest做UI测试,咱们核心依赖的是Selenium(用来操控浏览器)+ Pytest(测试框架),需要导入的内容如下:

  • 基础的WebDriver:from selenium import webdriver
  • 元素定位的统一枚举类(现在Selenium官方推荐用这个,替代旧的find_element_by_xxx方法):from selenium.webdriver.common.by import By
  • 可选但非常推荐的:显式等待相关工具(避免页面没加载完就找元素导致报错):
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    

Pytest本身不需要在测试函数里额外导入,只要你的测试文件命名符合Pytest规则(比如以test_开头,比如test_item_creation.py),运行时Pytest会自动识别。

然后:解决你的断言问题

你要验证元素内容等于'1000',分两种常见情况:

情况1:元素显示的是文本内容

如果目标元素是像<div>1000</div>这种直接展示文字的标签,直接用元素的text属性就行:

# 先替换成官方推荐的定位写法(旧的find_element_by_css_selector已经被标记为过时啦)
item = driver.find_element(By.CSS_SELECTOR, ':nth-child(7) > ._3XkHf > ._3-t-g')
assert item.text == '1000'

情况2:元素的属性值(比如输入框的value)

如果1000是元素的某个属性值(比如输入框的value属性:<input class="_3-t-g" value="1000">),那就要用get_attribute()方法获取对应的属性:

item = driver.find_element(By.CSS_SELECTOR, ':nth-child(7) > ._3XkHf > ._3-t-g')
assert item.get_attribute('value') == '1000'
额外小建议:让测试更稳定

直接用find_element可能会因为页面加载慢导致找不到元素,建议加个显式等待,等待元素可见后再操作:

# 等待元素在页面上可见,最多等待10秒
item = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, ':nth-child(7) > ._3XkHf > ._3-t-g'))
)
assert item.text == '1000'

内容的提问来源于stack exchange,提问作者JohnPix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:08:13