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

Selenium—xpath定位方法

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

今天我们来聊聊selenium -- xpath定位方法,我们都知道selenium有八大定位策略分别是id、name、class name、tag name、link text、partial link text、xpath、css 。那么我们今天呢主要来讲讲八大定位策略中的xpath的定位方法,废话不多说我们直接开始吧。

一、xpath基本定位用法

1.1 使用id定位 -- driver.find_element_by_xpath('//input[@id="kw"]')

​1.2 使用class定位 -- driver.find_element_by_xpath('//input[@class="s_ipt"]')

1.3 当然 通过常用的8种方式结合xpath均可以定位(name、tag_name、link_text、partial_link_text)以上只列举了2种常用方式哦。

二、xpath相对路径/绝对路径定位

2.1 相对定位 -- 以// 开头 如://form//input[@name="phone"]

​2.2 绝对定位 -- 以/ 开头,但是要从根目录开始,比较繁琐,一般不建议使用 如:/html/body/div/a

三、xpath文本、模糊、逻辑定位

3.1【文本定位】使用text()元素的text内容 如://button[text()="登录"]

3.2 【模糊定位】使用contains() 包含函数 如://button[contains(text(),"登录")]、//button[contains(@class,"btn")] 除了contains不是=等于 多用于display属性

​3.3 【模糊定位】使用starts-with -- 匹配以xx开头的属性值;ends-with -- 匹配以xx结尾的属性值 如://button[starts-with(@class,"btn")]、//input[ends-with(@class,"-special")]

3.4 使用逻辑运算符 -- and、or;如://input[@name="phone" and @datatype="m"]

四、xpath轴定位

轴运算

ancestor:祖先节点 包括父

parent:父节点

preceding-sibling:当前元素节点标签之前的所有兄弟节点

preceding:当前元素节点标签之前的所有节点

following-sibling:当前元素节点标签之后的所有兄弟节点

following:当前元素节点标签之后的所有节点

使用语法: 轴名称 :: 节点名称

使用较多场景:页面显示为一个表格样式的数据列

如:

​注意:

#定位 找到元素 -- 做到唯一识别 #优先使用id #舍弃:有下标的出现、有绝对定位的出现、id动态变化时舍弃
from selenium import webdriver import time from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.baidu.com/") driver.maximize_window() time.sleep(3) # 定位百度搜索框 driver.find_element_by_id("kw").send_keys("python") time.sleep(3) driver.find_element_by_id("su").click() time.sleep(5) # 找到这个元素 ele = driver.find_element_by_xpath('//a[text()="_百度百科"]') # 拖动元素到可见区域--scrollIntoView() 拉到顶部显示,有可能会被导航栏遮挡,定位不到而报错;scrollIntoView(false)可视区域底部对齐 driver.execute_script("arguments[0].scrollIntoView(false);", ele) time.sleep(5) driver.quit()

定位后的常见操作

get(url) 打开网页

send_keys(str) 输入

click() 点击

clear() 清空

text 获取标签文本内容

get_attribute('属性') 获取元素属性值

close() 关闭当前标签页

quit() 关闭浏览器,释放进程

FAQ

脚本结束如果没有调用quit()方法,chromedriver进程会在后台继续运行。大概占用4M空间。如果创建多了不关,会导致电脑卡。

__import__('os').system("taskkill /f /t /im chromedriver.exe")

五、总结

今天的文章就分享到这里了,喜欢的小伙伴记得点赞收藏评论加关注哟,关注我每天给你不同的惊喜。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

http://www.cnnetsun.cn/news/1671734.html

相关文章:

  • CANoe TestModule避坑指南:从环境搭建到报告生成,新手必看的5个常见错误
  • OpenClaw+Qwen3-14b_int4_awq低成本方案:自建模型替代SaaS API
  • ExplorerPatcher彻底清理指南:系统优化与残留解决全方案
  • 如何高效规划流放之路角色Build:Path of Building全攻略
  • EB Garamond 12开源字体的现代应用与创新使用指南
  • SPY650-FastAct:用于活细胞快速肌动蛋白动力学成像的远红探针
  • 重新定义个人知识管理:Joplin全平台笔记应用深度解析
  • es6基础学习(1)
  • vim常用快捷键
  • OpCore-Simplify终极指南:5分钟打造完美黑苹果系统的完整教程
  • 钉钉群自定义机器人消息推送spring boot starter封装组件
  • IDEA 环境下基于 Git 的代码上传操作及误操作后回滚清除记录处理指南
  • 踩坑生产后整理:KingbaseES表空间管理、auto_createtblspcdir参数深度解析与运维最佳实践
  • 提升esp32开发效率,快马平台智能生成模块化代码框架减少重复劳动
  • 嵌入式RC脉冲解码与通道状态诊断库
  • 从“只会聊天“到“全能员工“:2026年你需要了解的AI黑话(收藏版:小白程序员必备)
  • 绿联 安装SeaTable在线协同表格
  • 如何在UniApp中集成GraphQL:现代API开发的完整指南
  • Express-Mongoose-ES6-REST-API调试技巧:Debug模块高级用法
  • 2026高风控场景下指纹浏览器合规运营实践
  • Vue-weixin 实时聊天功能详解:Socket.IO + Vuex 状态管理最佳实践 [特殊字符]
  • Phi-4-mini-reasoning企业部署:通过Nginx实现负载均衡的多实例集群方案
  • 悬臂梁变形分析研究附Python代码
  • SharpSCADA部署与运维:生产环境搭建与故障排除完整清单
  • NodeGit终极演进指南:从社区驱动到企业级应用的完整路线图
  • 效率革命:用快马生成一键脚本,分钟级初始化你的wsl2全能开发环境
  • Anthropic一夜震撼升级:Claude获得「永久在线」,全球打工人变天
  • 一张好图,不该被抠图的难度挡住。轻松抠图,让创意自由流动
  • 解锁八大网盘下载自由:LinkSwift直链助手完全指南
  • Go OAuth2与数据库集成终极指南:安全存储认证信息的完整教程