xpath实例

2022年 10月 20日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

//查找所有的"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]

$(".code-name-line: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指定子节点

原文链接:https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: