博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于selenium的8种元素定位
阅读量:4475 次
发布时间:2019-06-08

本文共 2056 字,大约阅读时间需要 6 分钟。

selenium中有八种元素定位,分别是:id,name,class_name,tag_name,link_text、partial_link_text、xpath、css

简单的定位可以用 id、name、class_name、tag_name等,如果遇到复杂的元素需要定位则要使用xpath、或者css定位

下面是每种定位的用法——拿百度来说

1、id——定位到百度的输入框,可以看到百度的输入框id是唯一的,具体可以看下图

 

 在pycharm中,语句是:driver.find_element_by_id("kw").send_keys("selenium")

 send_keys 表示在输入框中输入文本

2、name——还是以百度输入框为例,可以看出百度输入框的name属性也是唯一的 

 

在pycharm 中语句是:

driver.find_element_by_name("wd").send_keys("selenium") 3、class_name——“百度一下”按钮,可以看出这个的class_name 是唯一的

 

在pycharm中的语句是:driver.find_element_by_class_name("bg s_btn").click()

4、tag_name——标签名称 

 

 这个方法很少用到,一般用xpath/css比较多 5、link_text——用来定位文本链接的 比如定位百度中的新闻:driver.find_element_by_link_text("新闻").click()
6、partial_link_text:和link_text 相似,唯一不同的是定位部分文本 如:点击hao123——driver.find_element_by_partial_link_text("hao").click() 7、xpath (1)用xpath对标签内的属性进行定位(id、name、class) 方法://标签名[@属性="属性名"] 双引号也可以用单引号表示 当某个元素的属性不是唯一的时候,需要采用组合的方式定位:"//标签名[@属性='属性名' and @属性='属性名']" (2)用text()方法定位 //标签名[text()="XXXX"] (3)模糊定位——contains()方法定位 //标签名[contains(@属性,"属性值")] (4)轴定位(下图来自http://www.runoob.com/xpath/xpath-axes.html)
轴名称 结果
ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
following-sibling 选取当前节点之后的所有兄弟节点
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。
通过轴定位定位“百度一下”按钮 首先定位到这个按钮,可以看到这是个input标签,input标签的父元素是span标签,span标签的父元素是form标签,那么我们可以从form标签开始定位然后通过descendant来找到它的后代input
//form[@id='form']/descendant::input[@id='su']
 

通过following 来定位——following 表示标签节点之后
//span[@id='s_kw_wrap']/following::input[@id='su']
//span[@id='s_kw_wrap']表示定位到id属性为s_kw_wrap的标签,/following::input[@id='su']表示找到结束标签(即)后的所有input标签,然后通过[@id='su']精准定位到id属性为'su'的标签

parent::可指定要查找的当前节点的直接父节点,例如,父节点是个div,即可写成parent::div,如果要找的元素不是直接父元素,则不可使用parent,可使用ancestor,代表父辈、祖父辈等节点;

child::表示直接子节点元素

following-sibling只会标识出当前节点结束标签之后的兄弟节点,而不包含其他子节点

 
 
 
 

转载于:https://www.cnblogs.com/xiaohanzi/p/9946695.html

你可能感兴趣的文章
MySql可视化工具MySQL Workbench使用教程
查看>>
个人站立会议第二阶段07
查看>>
云时代架构阅读笔记五——Web应用安全
查看>>
IOS 单击手势和cell点击冲突
查看>>
学习_HTML5_day3
查看>>
计算机网络与应用第二次笔记
查看>>
Django之ORM查询
查看>>
学习python第七天
查看>>
Flask基础(07)-->正则自定义转换器
查看>>
网站架构模式(二)
查看>>
【数据结构】算法 LinkList (Add Two Numbers)
查看>>
Bugtags:移动时代首选 Bug 管理系统
查看>>
hibernate学习笔记之一 hibernate简介
查看>>
Set集合和实现类
查看>>
Ubuntu 12.04安装vim和配置
查看>>
我在清华当工程师的日子
查看>>
编程如写作
查看>>
sql server 事务和锁的作用
查看>>
Nginx安装配置
查看>>
DFS ACM Battle(巧妙爆搜)
查看>>