xpath用法+os

转自https://blog.csdn.net/hou_angela/article/details/80305828
模糊查找
6.3 text方法

find_element_by_xpath("//a[contains(text(),‘新闻’)]") 查找超链接元素的文本内容

find_element_by_xpath("//*[text()=‘新闻’]") 查找所有内容为退出二字的元素
6.2 start-with方法(以XX开头)

find_element_by_xpath("//a[start-with(@href,‘http’)]")
6.1 contains 方法(包含)

find_element_by_xpath("//a[contains(@name,‘trnews’)]")
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’]")

在这里插入图片描述
以下转自https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838

//查找所有的"B"
var xpath="//B";
//查找所有元素
xpath = “//”;
// 选择所有路径依附于/A/B/的元素
xpath ="/A/B/
";
//选择所有的有3个祖先元素的B元素
xpath ="////B" ;
// 选择所有父元素是DDD的BBB元素
xpath="//C/D";
// 选择A/B/C的第一个E子元素
xpath="/A/B/C/E[1]";
//选择A/B/C的最后一个E子元素
xpath="/A/B/C/E[last()]" ;
//选择有name属性的B元素
xpath = “//B[@name]” ;
//选择所有的name属性
xpath="//@name";
//选择有任意属性的B元素
xpath="//B[@
]";
//选择没有属性的B元素
xpath="//B[not(@)]";
//选择含有属性id且其值为’e2’的E元素
xpath="//E[@id=‘e2’]";
//选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为’b’的B元素
xpath="//B[normalize-space(@name)=‘b’]";
//选择含有2个B子元素的元素
xpath="//
[count(B)=2]";
//选择含有3个子元素的元素
xpath="//[count()=3]";
//选择所有名称为B的元素(这里等价于//B)
xpath="//[name()=‘B’]";
//选择所有名称以"W"起始的元素
xpath="//
[starts-with(name(),‘W’)]";
//选择所有名称包含"W"的元素
xpath="//[contains(name(),‘W’)]";
//选择名字长度为2(大于、小于)的元素;
xpath="//
[string-length(name()) = 2]";
xpath="//[string-length(name()) < 2]";
xpath="//
[string-length(name()) > 1]";
//多个路径可以用分隔符 | 合并在一起,可以合并的路径数目没有限制,选择所有的WF和C元素
xpath="//WF | //C";
//等价于/A
xpath="/child::A";
//等价于//C/D
xpath="//child::C/child:: D";
//选择文档根元素的所有后代.即所有的元素被选择
xpath="/descendant:: *";
//选择/A/C的所有后代元素
xpath="/A/C/descendant:: *";
//选择D元素的所有父节点
xpath="//D/parent:: *";
//选择D元素的父节点
xpath="//D/…" (两个点,这个csdn编辑器怎么回事啊!)
//选择WF元素的祖先节点
xpath="//WF/ancestor:: *";
//包含上下文节点之后的所有兄弟节点(此节点之后的所有兄弟节点)
xpath="//WF/following-sibling:: *";
//选择兄弟节点中span标签且其class属性为alert
xpath="//WF/following-sibling::span[@class=‘alert’]"
//包含上下文节点之前的所有兄弟节点(此节点之前的所有兄弟节点)
xpath="//WF/preceding-sibling:: *";
//包含同一文档中按文档顺序位于上下文节点 之后 的所有节点, 除了祖先节点,属性节点和命名空间节点
xpath="/A/B/following:: *";
xpath="//B/following:: *";
//包含同一文档中按文档顺序位于上下文节点之前的所有节点, 除了祖先节点,属性节点和命名空间节点
xpath="//WF/preceding:: *";
//包含上下文节点本身和该节点的后代节点;
xpath="//C/descendant-or-self:: *";
//仅代表自身节点
xpath="//A/self:: *";
//一起使用则包含所有节点
xpath="//WF/ancestor:: * | //Wf/descendant:: * | //WF/following:: * | //WF/preceding:: * | //WF/self:: “;
//选择当前节点的文字
xpath=”//E/child::text()";
//选择所有当前节点的子节点
xpath="//V/child::node()";
//选择偶数位置的B元素
xpath="//B[position() mod 2 = 0 ]";
//选择中间的E元素
/

div运算符做浮点除法运算,
mod运算符做求余运算,
floor函数返回不大于参数的最大整数(趋近于正无穷),
ceiling返回不小于参数的最小整数(趋近于负无穷) */
xpath="//E[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]";
//可以忽略空白,寻找属性name=‘b’ or name=’ b '的元素
xpath="//@name[‘b’]";
//不忽略空白,完全匹配,寻找属性name='b’的元素
xpath="//@name[.=‘b’]";
2、使用dom定位
//span[text()=’${stockName}’]/parent:: */preceding-sibling:: *//div[@class=‘num’]
xpath:
contains:.//a[contains(@class,‘btnX’) and .//text()=‘Sign in’]
starts-with:.//a[starts-with(@class,‘btnSelectedBG’)]
使用相对位置定位当前元素的兄弟节点:
//span[contains(text(),‘昨收’)]/following-sibling:: *[position() = 1]
6、使用xpath匹配到多个元素时,可以使用一些关键字剔除掉某些不需要的元素
xpath=//input[ not(@id)][@type=“checkbox”]
这样就剔除了那些包含id属性的元素了
xpath=//span[ contains(.,‘已选’)]
xpath=//iframe[ starts-with(@id, ‘compose’)]
xpath= //li[@id=‘btn_forward’]//i[@class=‘i_triangle_d’]
//span[text()=‘买入’ and not(@class)]
//img[contains(@id,‘ext-gen605’)]
//img[contains(@src,’/…/’) and index=1]
3、定位元素出现多个,但只有一个可见,其他隐藏,可以这样定位:
$(".button:visible")[0]
( " . c o d e − n a m e − l i n e : v i s i b l e " ) [ 0 ] . c h i l d r e n [ 1 ] 4 、 找 出 文 本 为 “ 买 入 ” 的 元 素 / / b u t t o n [ t e x t ( ) = ‘ 退 出 ’ ] / / h 1 [ c o n t a i n s ( . , ‘ 人 民 币 ’ ) ] 此 外 , c s s S e l e c t o r 还 有 一 些 高 级 用 法 , 如 果 熟 练 后 可 以 更 加 方 便 地 帮 助 我 们 定 位 元 素 , 如 我 们 可 以 利 用 用 于 匹 配 一 个 前 缀 , (".code-name-line:visible")[0].children[1] 4、找出文本为“买入”的元素 //button[text()=‘退出’] //h1[contains(.,‘人民币’)] 此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用^用于匹配一个前缀, (".codenameline:visible")[0].children[1]4//button[text()=退]//h1[contains(.,)]cssSelector便用于匹配一个后缀,用于匹配任意字符。例如:
匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^=‘id_prefix_’]
匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$=’_id_sufix’]
匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id
=‘id_pattern’]
xpath指定子节点
————————————————
版权声明:本文为CSDN博主「DaxiaLeeSuper」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838
补os部分:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值