xpath 使用路徑表示式來選取 xml 文件或html文件上的節點或節點集,分別有絕對路徑、相對路徑兩種表達方式。
缺點:webdriver會將整個頁面的所有元素進行掃瞄以定位我們所需要的元素,若指令碼中大量使用xpath做元素定位,指令碼的執行速度會變慢
表示式描述
.選取當前節點
..選取當前節點的父節點
/從根節點擊取,預設情況下當前節點是 html
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置
nodename
選取此節點的所有子節點,類似 css 中的標籤選擇器
@選取屬性
絕對路徑定位:
以「/」開頭,從最頂層html開始往下找,像資料夾一樣寫的完整路徑
缺點:一旦頁面結構發生改變,路徑也隨之失效,必須重新定位
相對路徑定位:
以「//」開頭,可以用任意層級的元素作為起點
索引定位:
//input[2] 表示匹配任意節點下的第二個input標籤
屬性定位:
表示式含義/*[@class]
表示匹配下一級中,所有具備class屬性的任意標籤
//div[@id=『abc』 and @class=『abc』]
表示匹配任意節點下,id為abc且class為abc的div標籤
//div[starts-with(@id,『kw』)]
表示匹配任意節點下,id開頭為kw的div標籤
//div[contains(@id,『kw』)]
表示匹配任意節點下,id包含kw的div標籤
選擇器表達示例
解釋id選擇器(id用 #表示)
#abc
匹配id為abc的標籤
class選擇器(class用 .表示)
.abc
匹配class為abc的標籤
標籤選擇器
p匹配p標籤
分組選擇器
a,span
匹配 a 標籤和 span標籤
屬性選擇器—指定值
[class=「li」]
匹配class為li的標籤
屬性選擇器—不指定值
[title]
匹配屬性有title的標籤
屬性選擇器—指定標籤
a[title]
匹配屬性有title的a標籤
屬性選擇器—匹配單詞邊界
a[title~=「hello」]
匹配title包含hello的a標籤
後代選擇器(空格表示),可選取當前層級下的任意層級元素
#ab p
匹配id為ab的下一/多級p標籤
子元素選擇器(>表示),只能選擇下一級的元素
#ab>p
匹配id為ab的下一級中的p標籤
相鄰兄弟選擇器(+表示),只能選擇同級的下乙個元素
#ab+.ab
匹配id為ab的同級下一元素且該元素的class為ab才能匹配到
後續兄弟選擇器(~表示),選取指定元素後的所有同級指定元素
.ab~li
匹配class為ab的標籤後的所有同級li標籤
偽類
表示式描述nth-child(n)
匹配第 n 個子元素
nth-last-child(n)
匹配倒數第n個子元素
nth-of-type(n)
匹配第 n 個指定型別的標籤
first-child
匹配第乙個標籤
last-child
匹配最後乙個標籤
定位元素注意事項:
1、css是配合html來工作,原理是匹配物件;而xpath是配合xml工作的,原理是遍歷,故css效能更優秀
2、css語言比xpath更簡潔明瞭
3、前段開發主要是使用css,不使用xpath,所以在技術上面,我們可以獲得幫助的機會非常多
CSS 高階語法
你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。h1,h2,h3,h4,h5,h6 根據 css,子元素從父元素繼承屬性。但是它並不總是按此方式工作。看看下面這條規則 body根...
CSS 高階語法
你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。h1,h2,h3,h4,h5,h6根據 css,子元素從父元素繼承屬性。但是它並不總是按此方式工作。看看下面這條規則 body根據...
CSS 高階語法
你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。h1,h2,h2,h3,h5,h6 根據 css,子元素從父元素繼承屬性。但是它並不總是按此方式工作。看看下面這條規則 body根...