xpath 是 xml 路徑語言,用來查詢 xml 文件裡中的節點。主流的瀏覽器都支援 xpath,因
為 html 頁面在 dom 中表示為 xhtml 文件。
xpath 語言是基於 xml 文件的樹結構,並提供了瀏覽樹的能力,通過多樣的標準來選擇結
點。selenium webdriver 支援使用 xpath 表示式來定位元素。
利用 xpath 來定位元素非常方便,但是,便捷的定位策略犧牲了系統的效能。
xpath 和 css 中最重要的區別在於,xpath 可以向前和向後查詢 dom 結構的元素,而 css
只能向前查詢。這意味著使用 xpath 可以通過子元素來定位父元素。
1.通過絕對路徑定位元素
和 css 絕對路徑相似,xpath 絕對路徑適用於指定元素的位置。這裡的乙個例子就是使用
絕對路徑來定位使用者名稱的字段。在每乙個元素之間需要有乙個空格。
webelement username=driver.findelement(by.xpath("html/body/div/div/form/input"));
但是,這個策略有侷限性,他需要參考整個頁面的文件結構。如果改變了,此元素的定位將會
失效。
2.通過相對路徑定位元素
用相對路徑,我們可以直接找到元素而不管其在 dom 中的位置。例如,我們可以通過如下
方法來定位使用者名字段,假設這個元素處於 dom 中第乙個:
webelement username=driver.findelement(by.xpath("//input"));
3.使用索引來定位元素
在前面的示例中,xpath 查詢將返回第乙個 dom 中元素。可能會有多個元素都匹
配了 xpath 查詢。如果元素不是第乙個元素,我們也可以指定他的個數來找到它。例如在我
們的登入表單,我們可以找到密碼字段 - 第二個,方法如下:
webelement password=driver.findelement(by.xpath("//input[2]"));
4.使用 xpath 及屬性值定位元素
和 css 相似,我們可以在 xpath 中使用元素的屬性來定位元素。在下面的例子中,可以使
用 id 屬性來定位使用者名字段。
webelement username=driver.findelement(by.xpath("//input[@id='username']"));
另乙個使用 alt 屬性來定位 image 屬性的例子:
webelement previousbutton=driver.findelement(by.xpath("img[@alt='previous']"));
你可能會遇到乙個屬性不足以來定位到乙個元素的情況,你需要聯合使用其他的屬性來達到
精確匹配。下面的例子中,使用多個屬性來定位元素。
webelement previousbutton = driver.findelement(by.xpath("//input[@type='submit'][@value='login']"));
使用 xpath 和 and 操作符也同樣可以達到相同的效果
webelement previousbutton = driver.findelement(by.xpath("//input[@type='submit' and @value='login']"));
下面的例子中,使用 or 操作符任何乙個屬性滿足也將可以對元素進行定位
webelement previousbutton = driver.findelement(by.xpath("//input[@type='submit' or @value='login']"));
5.使用 xpath 及屬性名稱定位元素
這個策略和之前的有些不同,我們叧通過指定元素中屬性的名稱而不是屬性的值來定位元素。
例如,我們想要查詢所有
listimageswithalt=driver.findelements(by.xpath("img[@alt]"));
6.部分屬性值的匹配
類似於css 選擇器,xpath 還提供了一種一些方法部分匹配屬性來定位元素。這對於網頁
中的屬性在動態髮化的時候是非常有用的。例如,asp.net 應用程式中動態生成 id 屬性
值。下面的表說明了使用這些 xpath 功能: 語法
例子描述
starts-with()
input[starts-with(@id,'ctrl')]
例如,如果元素的 id 為
ctrl_12,將會匹配以 ctrl
開始的屬性值。
ends-with()
input[ends-with(@id,'_username')]
例如,如果元素的 id 為
a_1_username,將會匹配
以 username 結尾的屬性
值。contains()
input[contains(@id,'username')]
例如,如果元素的 id 為
panel_login_username
_textfield,將會匹配含
有 username 屬性值。
7.使用值來匹配任意屬性及元素
xpath 可以匹配任意元素屬性中指定的值。例如,在下面的 xpath 查詢中,「username」
是指定的。xpath 將會檢查所有元素中是否有屬性等於」username」,並將其返回。
webelement username =driver.findelement(by.xpath("//input[@*='username']"));
8.使用 xpath 軸來定位元素
xpath 軸是借助於文件中元素不元素之間的關係來定位。下面有乙個簡單的的
xpath 軸的例子。
用xpath定位元素
一 用xpath定位元素需要了解的知識 1.xml路徑語言 用來確定xml文件中某部分位置的語言 2.xpath 用於在xml文件中通過元素和屬性進行導航 3.xpath是乙個w3c標準 4.對xml html有一定的了解 二 xpath 節點型別 元素,屬性,文字,命名空間,指令處理,注釋及文件 ...
python定位元素 Python元素定位
一.id元素定位 id有兩種情況 一種id是唯一的,另一種id是動態的。1 當id是唯一,最簡單的定位方式 用法 find element by id id value 例項 find element by id kw 2 若id是動態變化,則不可以採用以上方式定位,如下 id是動態變化 二.nam...
Selenium(四)使用xpath定位元素
1.什麼是xpath 2.xpath的節點型別 3.xpath的表示式 4.開始定位 瀏覽器開啟本地檔案 python3.7的開啟語法 查詢根節點 絕對路徑 查詢子節點 查詢type屬性 絕對路徑 查詢同級的元素 絕對路徑 查詢age輸入框元素 整個文件掃瞄,找到input元素 修改html文件,在...