selenium元素定位方式xpath总结
一.绝对路径(不要使用,除非已经使用了所有方式仍然无法定位)
方法:根据实际目录,逐层输写。
例子: find_element_by_xpath("/html/body/div[2]/form/span/input") #div[2]指第2个元素
二.相对路径(建议使用)
方法:首先找目录元素是否有”精准元素“即唯一能标识的属性,找到,则用此属性定位;
1. 通过元素本身的唯一属性定位
方法:找到目标元素所在的”精准元素“即唯一标识属性,使用此属性定位
1.1 通过id属性定位
例:find_element_by_xpath("//input[@id='input']") #@后跟属性,可以是任何属性
1.2 通过name属性定位
例:find_element_by_xpath("//div[@name='q']")
2. 通过上一级目录的唯一属性定位
方法:目标元素没有唯一属性,则去找到与目标元素相近的上级目录中”唯一元素“作为起始位置,然后根据此相对位置逐层往子目录编写到目标位置
例: find_element_by_xpath("//span[@id='input-container']/input")
find_element_by_xpath("//div[@id='hd']/form/span/input")
find_element_by_xpath("//div[@name='q']/form/span/input")
3. xpath做布尔逻辑运算
例子:find_element_by_xpath("//div[@id='hd' or @name='q']")
4. 双条件同时过滤
find_element_by_xpath("//div[@id='hd'][@name='q'")
5.目录元素存在层级关系
例1: find_element_by_xpath("//ul[@class='app-list']/li[contains(@class,'safe')]/div")
例2:定位上一层再定位目标元素(定位dl再定位dt)
find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id='J_password']")
6. 模糊定位
6.1 contains 方法(包含)
find_element_by_xpath("//a[contains(@name,'trnews')]")
6.2 start-with方法(以XX开头)
find_element_by_xpath("//a[start-with(@href,'http')]")
6.3 text方法
find_element_by_xpath("//a[contains(text(),'新闻')]") 查找超链接元素的文本内容
find_element_by_xpath("//*[text()='新闻']") 查找所有内容为退出二字的元素
注意:元素属性值有空格时,尽量不使用带空格,可用contains等其他方法,避开空格
---------------------
版权声明:本文为CSDN博主「hou_angela」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hou_angela/article/details/80305828
最新文章
- 获取移除指定Url参数(原创)
- PHP性能优化-编译级别的缓存
- Spring 事务中 readOnly 的解释
- 【HDU 3810】 Magina (01背包,优先队列优化,并查集)
- 如何判断Fragment是否对用户可见
- Flume配置
- 浅尝key-value数据库(一)——一览NoSQL
- Python3基础 global关键字 使函数的局部变量升格为全局变量
- MySql学习(七) —— 查询性能优化 深入理解MySql如何执行查询
- IOS开发创建开发证书及发布App应用(二)——创建证书
- C++ Primer高速入门之三:几种常见的控制语句
- Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)
- make和makefile简明基础
- zipkin+kafka+elasticsearch
- Python语言——基础01-环境安装、注释、变量
- 第16月第8天 NSInvocation存储 函数指针 va_arg lldb
- 浅谈RPC调用
- test20180919 区间最大值
- 使用PuTTy在CentOS下安装web.py与简单的文件传输
- Java最大的优势真的在于跨平台吗?
热门文章
- opencv,用摄像头识别贴片元件的定位和元件的角度(转载)
- Linux计划任务与压缩归档
- QTP(9)
- zencart清空产品商品实用命令
- [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)]
- 第七章 路由 76 路由传参-使用params方式传递路由参数
- loj2718 「NOI2018」归程[Kruskal重构树+最短路]
- 喜大普奔!.NET界面控件DevExpress v19.2发布,快来下载体验
- IDEA中使用Sqlite3
- LocalDate使用(转)