//查找所有的”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::*”;
//選擇WF元素的祖先節點
xpath=”//WF/ancestor::*”;
//包含上下文節點之后的所有兄弟節點(此節點之后的所有兄弟節點)
xpath=”//WF/following-sibling::*”;
//包含上下文節點之前的所有兄弟節點(此節點之前的所有兄弟節點)
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指定子節點
---------------------
作者:DaxiaLeeSuper
來源:CSDN
原文:https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!