练习 JavaScript 定位方法的核心实操与效果验证
本页面提供 JavaScript 定位方法的完整练习场景。页面包含练习要求描述卡(方法概念 + Selenium 示例 + 练习清单)和定位后操作效果展示区域,在输入框输入内容、点击按钮、勾选选择框时,效果展示区会实时显示对应卡片。
使用 document.getElementById()、document.getElementsByName()、document.getElementsByClassName()、document.getElementsByTagName()、document.querySelector()、document.querySelectorAll() 等浏览器原生 JS API 定位元素;在 Selenium 中通过 driver.execute_script() 执行 JS 代码。
# getElementById — 最快速,返回单个元素 element = driver.execute_script( "return document.getElementById('js-username')") # getElementsByName — 返回 NodeList elements = driver.execute_script( "return document.getElementsByName('js-skill')") # getElementsByClassName — 返回 HTMLCollection elements = driver.execute_script( "return document.getElementsByClassName('js-card')") # getElementsByTagName — 返回 HTMLCollection elements = driver.execute_script( "return document.getElementsByTagName('input')") # querySelector / querySelectorAll — CSS 选择器 element = driver.execute_script( "return document.querySelector('.js-card.active')") elements = driver.execute_script( "return document.querySelectorAll('.js-card')") # 直接执行操作(无需 find_element) driver.execute_script( "document.getElementById('js-btn').click()")
document.getElementById('js-username').value;接着定位并输入邮箱/密码/手机;继续定位并勾选协议复选框 document.getElementById('js-agree').checked = true ;然后定位并点击「读取当前表单」,观察效果区 — 每个字段都对应一行 getElementById 返回值;最后提交name="js-skill" 批量勾选并读 value); ② 课程卡片(.js-course-card 批量获取读 data-level); ③ 数据统计(TAG_NAME('td') 批量遍历计算)querySelector('#js-card-container .js-card:nth-child(3)') 选取第 3 张商品卡片;点击切换 .active 高亮态querySelectorAll('#js-tag-cloud .js-tag') 获取所有标签,遍历读取 data-category 统计各类别数量操作步骤:
① 定位用户名并输入 → document.getElementById('js-username').value = 'admin'
② 定位邮箱/密码/手机并输入 → document.getElementById('js-email').value = 'admin@test.com'
③ 定位并勾选「同意协议」→ document.getElementById('js-agree').checked = true
④ 定位并点击「读取当前表单」,观察效果区 — 每个字段都对应一行 getElementById(id).value 或 .checked 的返回值
⑤ 定位并点击提交按钮,对比 document.getElementById('js-btn-submit').click() 与浏览器原生点击是否一致
操作步骤:
① getElementsByName → document.getElementsByName('js-skill') 获取 5 个同名 checkbox,遍历勾选并读 value
② getElementsByClassName → document.getElementsByClassName('js-course-card') 获取 6 张课程卡片,读取 data-level
③ getElementsByTagName → document.querySelectorAll('#js-stats-table td') 批量遍历计算总数
5 个技能复选框共享 name="js-skill",使用 document.getElementsByName('js-skill') 获取所有技能,遍历勾选并读取 value。
6 张课程卡片共享 CSS 类 .js-course-card,使用 document.getElementsByClassName('js-course-card') 获取所有卡片,读取 data-level 属性。
成绩表中每行每列都是 td 标签,使用 document.getElementsByTagName('td') 获取所有单元格,遍历读取内容并统计。
| 学号 | 姓名 | Python | Selenium | Pytest |
|---|---|---|---|---|
| 2026001 | 张三 | 92 | 88 | 95 |
| 2026002 | 李四 | 85 | 91 | 87 |
| 2026003 | 王五 | 78 | 82 | 90 |
| 2026004 | 赵六 | 96 | 94 | 89 |
| 方法 | 参数 | 返回类型 | 适用场景 |
|---|---|---|---|
getElementsByName |
name 属性值 | NodeList(动态) | 同名 checkbox/radio 组 |
getElementsByClassName |
CSS 类名 | HTMLCollection(动态) | 同类型卡片/标签批量 |
getElementsByTagName |
HTML 标签名 | HTMLCollection(动态) | 表格/列表/链接统计 |
操作步骤:
① 用 querySelector 精确选第 3 张卡片 → document.querySelector('#js-card-container .js-card:nth-child(3)')
② 点击卡片切换 .active 高亮态 → card.classList.toggle('active')
操作步骤:
① 批量获取所有标签 → document.querySelectorAll('#js-tag-cloud .js-tag')
② 遍历读取 data 属性 → tag.dataset.category(注意 Selenium 里用 get_attribute('data-category'))
③ 统计各类别数量并输出
当前尚无操作记录
请尝试:① 填写表单→勾选→提交 ② 点击商品卡片 ③ 点击标签 ④ 统计按钮 ⑤ 技能/课程/表格练习