元素定位练习 · CLASS 属性定位

练习 By.CLASS_NAME 定位方法的核心实操与效果验证

首页 定位导航

练习说明

本页面提供 By.CLASS_NAME 定位方法的完整练习场景。页面包含练习要求描述卡(方法概念 + Selenium 示例 + 练习清单)和定位后操作效果展示区域,在输入框输入内容、点击按钮、勾选选择框时,效果展示区会实时显示对应卡片。

方法 3:By.CLASS_NAME — 通过 class 属性定位

CLASS_NAME 只接受单个 class 名(不能包含空格!),通常用于批量获取一组同类元素。

练习要求 · 方法 3:By.CLASS_NAME
📌 方法概念
原理:通过元素的一个 class 名称定位;匹配所有 classList 中包含该名称的元素(多个 class 元素也能定位其中任何一个)。
适用场景:批量统计同类元素(如一组标签卡片、用户头像、商品卡片、列表项)、或页面中 class 语义明确且唯一的特殊元素。
注意事项:只能传「单个 class 名」,不能有空格!如元素 class="demo-btn green" 必须分别用 demo-btn 或 green,不能一起传;多 class 组合请用 By.CSS_SELECTOR。
💻 Selenium 示例(Python)
from selenium import webdriver
from selenium.webdriver.common.by import By
# 1) 定位单个 class="avatar-name" 的第一个用户卡片
first_user = driver.find_element(By.CLASS_NAME, "attrClass_avatar_name")
print(first_user.text)
# 2) find_elements 批量读取所有 5 个标签卡片文字
tags = driver.find_elements(By.CLASS_NAME, "attrClass_tag_box")
for t in tags: print(t.text)
# 3) 组合定位:先 CLASS 取用户卡片容器,再找内部姓名/职位
cards = driver.find_elements(By.CLASS_NAME, "attrClass_img_card")
for c in cards:
    name = c.find_element(By.CLASS_NAME, "attrClass_avatar_name").text
    role = c.find_element(By.CLASS_NAME, "attrClass_avatar_role").text
# 4) 进阶:订单卡组合定位 — 遍历所有订单容器,在每张卡内部读取状态/金额,做统计或过滤
orders = driver.find_elements(By.CLASS_NAME, "attrClass_order_card")
for o in orders:
    st    = o.find_element(By.CLASS_NAME, "attrClass_order_status").text
    amount = o.find_element(By.CLASS_NAME, "attrClass_order_amount").text
    print(st, amount)
📋 本节练习清单
  • ✅ 练习目标 1:技术标签卡片 — find_elements(By.CLASS_NAME, "attrClass_tag_box") 拿到 5 个卡片,按索引点击每个卡片并获取文字内容
  • ✅ 练习目标 2:用户头像卡片(组合定位) — 先 find_elements(By.CLASS_NAME, "attrClass_img_card") 拿到 3 张卡片容器,再每张卡内部 card.find_element(By.CLASS_NAME, "attrClass_avatar_name") / attrClass_avatar_role 读取姓名和职位
  • ✅ 练习目标 3:订单卡片(组合定位进阶) — 先拿 6 张 attrClass_order_card 容器,每张内部再用 class 定位 4 个子元素;完成:a. 按状态统计数量(已付款×2 / 已发货×1 / 待付款×1 / 已完成×1 / 已取消×1)b. 筛选金额 ≥ 500 的大订单(1280.50 和 899.00 共 2 张)c. 确认页面上 5 种状态徽章都能被 find_element 找到

练习目标 1:技术标签卡片(class="attrClass_tag_box",共 5 个)

操作步骤:
① 批量获取 5 个卡片 → tags = driver.find_elements(By.CLASS_NAME, "attrClass_tag_box")
② 遍历点击每个卡片 → for t in tags: t.click()
③ 获取文字内容 → tags[0].text

自动化测试 Selenium Appium Playwright Pytest

练习目标 2:用户头像卡片(class="attrClass_img_card",共 3 个)

操作步骤(组合定位:先拿容器,再容器内部找子元素):
① 先拿 3 张卡片容器 → cards = driver.find_elements(By.CLASS_NAME, "attrClass_img_card")
② 每张卡内部找姓名 → cards[0].find_element(By.CLASS_NAME, "attrClass_avatar_name").text
③ 每张卡内部找职位 → cards[0].find_element(By.CLASS_NAME, "attrClass_avatar_role").text

avatar
李小华
测试工程师
avatar
王大伟
开发工程师
avatar
赵敏
产品经理

练习目标 3:订单卡片(外层 class="attrClass_order_card",内层 4 个子 class)

操作步骤(组合定位进阶:容器 → 内部子元素):
① 拿 6 张订单卡片容器 → orders = driver.find_elements(By.CLASS_NAME, "attrClass_order_card")
② 每张卡内部读状态 + 金额 → status = orders[i].find_element(By.CLASS_NAME, "attrClass_order_status").text;amount = float(orders[i].find_element(By.CLASS_NAME, "attrClass_order_amount").text)
③ 完成三个小任务:
  a. 按状态统计数量 → 已付款=2 / 已发货=1 / 待付款=1 / 已完成=1 / 已取消=1
  b. 筛选金额 ≥ 500 的大订单 → 1280.50 和 899.00 共 2 张
  c. 确认 5 种状态徽章都能被找到 → 分别 find_element(By.CSS_SELECTOR, ".attrClass_order_status.paid") 等 5 种

DD20260829-001
李小华 299.00
DD20260829-002 已发货
王大伟 1280.50
DD20260829-003 待付款
赵敏 59.90
DD20260829-004 已完成
陈强 899.00
DD20260829-005
周婷 456.00
DD20260829-006 已取消
吴昊 199.00
🛠 组合定位练习辅助

定位后操作效果展示区域

本区域用于展示:使用 By.CLASS_NAME 定位到上方标签卡/用户卡/订单卡后,点击或批量读取文字内容的真实反馈结果。

当前尚无操作记录

请尝试:① 点击「技术标签」卡片 ② 点击「用户头像」卡片 ③ 点击「订单卡片」观察组合定位 ④ 用 find_elements 批量读取标签或订单。


关于我们

Python 自动化测试学习平台是一个面向软件测试工程师、开发人员及在校学生的交互式在线学习平台,专注于 Selenium WebDriver 与 Python unittest 自动化测试技能的教学与实践。

我们以"理论 + 实战 + 可交互演示"为核心特色,将八种常规元素定位和Javascript定位、元素操作、自动化测试工具、单元测试、测试模型等知识体系拆分为模块化课程,每个模块都配有可点击、可输入、可运行的模拟练习页面。

平台致力于降低自动化测试的入门门槛,让学习者从"看懂代码"到"动手实操",逐步掌握企业级自动化测试框架的设计与落地能力。

联系方式

📧邮箱:lq@selenium-auto-test.com

📞电话:0755-12345678

📍地址:深圳

💬微信公众号:Selenium自动化测试

🐙GitHub:github.com/selenium-auto-test

免责声明

1. 本平台所有示例代码、演示页面及教程内容均仅供学习交流使用,不构成任何商业推广或技术服务承诺。

2. 平台中的 Selenium API 描述、Python 语法说明均以官方文档为准,如有版本差异请以对应官方文档为准。

3. 学习者在实际项目中应用平台所学内容时,应结合自身项目环境进行充分测试,本平台不对因直接使用示例代码而产生的任何直接或间接损失承担责任。

4. 本平台所引用的第三方库(Selenium、ChromeDriver、unittest 等)版权归其各自作者及维护者所有。

5. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。