当前位置: 首页 > news >正文

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式

Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式:

基本定位方式

  1. 通过ID定位

    driver.find_element(By.ID, "element_id")
    
  2. 通过Name定位

    driver.find_element(By.NAME, "element_name")
    
  3. 通过Class Name定位

    driver.find_element(By.CLASS_NAME, "class_name")
    
  4. 通过Tag Name定位

    driver.find_element(By.TAG_NAME, "tag_name")
    
  5. 通过Link Text定位(精确匹配)

    driver.find_element(By.LINK_TEXT, "链接文本")
    
  6. 通过Partial Link Text定位(部分匹配)

    driver.find_element(By.PARTIAL_LINK_TEXT, "部分链接文本")
    

CSS 选择器定位

driver.find_element(By.CSS_SELECTOR, "css_selector")

示例:

  • "#id" - 通过ID
  • ".class" - 通过类名
  • "div > input" - 子元素
  • "input[type='text']" - 属性选择器

XPath 定位

driver.find_element(By.XPATH, "xpath_expression")

示例:

  • "//input" - 所有input元素
  • "//div[@id='main']" - 特定属性的div
  • "//a[contains(text(),'登录')]" - 包含特定文本的链接

查找多个元素

使用find_elements(注意复数形式)返回匹配的所有元素列表:

elements = driver.find_elements(By.CSS_SELECTOR, ".list-item")

相对定位(Selenium 4新增)

Selenium 4 引入了相对定位器:

from selenium.webdriver.support.relative_locator import locate_withpassword = driver.find_element(By.ID, "password")
email = driver.find_element(locate_with(By.TAG_NAME, "input").above(password))

相对定位方法包括:above(), below(), to_left_of(), to_right_of(), near()

最佳实践

  1. 优先使用ID定位,因为ID通常是唯一的且效率最高
  2. 当ID不可用时,考虑使用CSS选择器
  3. XPath功能强大但执行较慢,应谨慎使用
  4. 对于动态元素,考虑使用显式等待结合定位策略

示例代码

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 ECdriver = webdriver.Chrome()
driver.get("https://example.com")# 使用显式等待定位元素
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "dynamic-element"))
)# 使用CSS选择器
submit_button = driver.find_element(By.CSS_SELECTOR, "button.submit-btn")# 使用XPath
link = driver.find_element(By.XPATH, "//a[contains(@href, 'logout')]")

记得在使用完WebDriver后调用driver.quit()来关闭浏览器和释放资源。

支付宝这一次力度够大的啊,后台看到有人居然领了 20 元,你也来试试

在这里插入图片描述

http://www.lqws.cn/news/150697.html

相关文章:

  • 【hadoop】Flink安装部署
  • 华为OD最新机试真题-小明减肥-OD统一考试(B卷)
  • CLIP多模态大模型的优势及其在边缘计算中的应用
  • mac 电脑Pycharm ImportError: No module named pip
  • opencv如何在仿射变换后保留完整图像内容并自动裁剪
  • 数学建模-嘉陵江铊污染事件解题全过程文档及程序
  • 论文速读《DexWild:野外机器人策略的灵巧人机交互》
  • Uniapp 二维码生成与解析完整教程
  • SpringBoot自动化部署全攻略:CI/CD高效实践与避坑指南
  • 空间利用率提升90%!小程序侧边导航设计与高级交互实现
  • 苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
  • 钉钉 - 机器人消息推送(签名版)
  • Python Rio 【图像处理】库简介
  • ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
  • EXCEL如何快速批量给两字姓名中间加空格
  • Python使用总结之Mac安装docker并配置wechaty
  • Ntfs!ReadIndexBuffer函数分析之nt!CcGetVirtualAddress函数之nt!CcGetVacbMiss
  • Prompt Tuning:生成的模型文件有什么构成
  • NoSQL——Redis配置与优化
  • 拆解实战案例:电商ERP管理系统从需求到原型全流程设计
  • vue2中使用jspdf插件实现页面自定义块pdf下载
  • 深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
  • ML Kit与YOLO:移动AI与实时检测终极对决
  • 数据分析实战2(Tableau)
  • 【DAY40】训练和测试的规范写法
  • AI系统负载均衡与动态路由
  • 联邦学习架构深度分析:支持多家医院协作训练AI模型方案分析
  • gc2053驱动学习笔记
  • 微服务架构下的服务注册与发现:Eureka 深度解析
  • 4.3 HarmonyOS NEXT AI驱动的交互创新:智能助手、实时语音与AR/MR开发实战