xpath实例

2022年 10月 20日 发表评论
腾讯云618会场:点此直达 阿里云618会场:点此直达
免费/便宜/高性价比服务器汇总入口(已更新):点此直达

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

腾讯云618活动:点此领取】8888元代金券,附云服务器价格表,2核2G4M轻量应用服务器99元1年,新老用户都可以买,可以享受1次续费99元一年、135元15个月、三年560元,MySQL云数据库59元1年起,2核2G3M配置82元1年,2核4G5M配置188元一年、3年900元,4核8G12M轻量服务器880元15个月,8核16G配置1890元15个月,更多16核32G28M带宽和云服务器CVM标准型S5、GPU服务器、CVM标准型SA2租用优惠价格如下,可以 点此进入最新活动页 查看当前最新的优惠券和活动信息。 腾讯云首购便宜续费贵,点击前往 【爆品专区】选择3年/5年,免得续费贵;首购便宜升级贵,建议 点击 选择8核16G/16核32G配置高的服务器。 阿里云618活动:点击领取】5亿上云补贴和2088元满减代金券,阿里云服务器租用费用618活动最新价格表【点击了解】,最便宜轻量应用服务器2核2G3M带宽82元1年,ECS云服务器2核2G3M带宽99元一年,ECS u1实例2核4G5M带宽优惠价格199元一年,香港30M带宽轻量服务器24元1个月、288元一年,4核8G服务器706元一年,ECS云服务器4核16G10M带宽30元1个月、90元3个月,云服务器8核32G10M带宽109元1个月、327元3个月。 腾讯云老用户享新人优惠的方法:用Qq登录、1人可注册3个新账号/用家人朋友的身份注册新号(点击注册新账号)。
小咸鱼

发表评论

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