xpath定位

xpath定位

被測試網頁的HMTL代碼html

複製代碼

<html>
    <body>
        <div id="div1">
            <input name="div1input"></input>
                <a href="http://www.sogou.com">搜狗搜索</a>
                    <img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗圖片</img>
            <input type="button" value="查詢"></>
        </div>
        <br>
        <div name="div2">
            <input name="div2input"></input>
                <a href="http://www.baidu.com">百度搜索</a>
                    <img alt="div2-img2" src="http://www.baidu.com/img/bdlogo.png" href="http://www.baidu.com">百度圖片</img>
        </div>
    </body>
</html>

複製代碼

絕對路徑定位方式:

在被測試網頁中,查找第一個 div 標籤中的按鈕。dom

XPath的表達式: /html/body/div/input[@value="查詢"]函數

Java的定位語句: WebElement button= driver.findElement(By.xpath("/html/body/div/input[@value='查詢']"));測試

相對路徑定位方式:

在被測試網頁中,查找第一個 div 標籤中的按鈕。
XPath的表達式:
// input[@value="查詢"]
Java的定位語句:
WebElement button= driver.findElement(By.xpath("//input[@value='查詢']"));spa

XPath 使用索引號定位:

被測試網頁的HMTL代碼3d

使用索引號定位方式: 在被測試網頁中,查找第二個 div 標籤中的「查詢」按鈕。code

XPath的表達式: //input[2]htm

Java的定位語句: WebElement button= driver.findElement(By.xpath("//input[2]"));blog

XPath 使用頁面元素的屬性值定位:

使用頁面屬性值方式:索引

咱們嘗試定位被測試網頁中的第一個圖片元素。
XPath 的表達式
//img[@alt='div1-img1']
Java的定位語句:
WebElement img= driver.findElement(By.xpath("//img[@alt='div1-img1']"));

XPath 使用頁面元素的屬性值定位:

預期定位的頁面元素 定位表達式示例 使用的屬性值
定位頁面的第一個圖片 //img[@href='http://www.sogou.com'] 使用img標籤的href屬性值
定位第二個div中第一個Input輸入框 //div[@name='div2']/input[@name='div2input'] 使用div標籤的name屬性值 使用 input標籤的name 屬性值
定位第一個div中的第一個連接 //div[@id='div1']/a[@href='http://www.sogou.com'] 使用的div標籤的id 屬性值 使用了a標籤的href屬性值
定位頁面的查詢按鈕 //input[@type='button'] 使用了type屬性值

XPath 使用模糊頁面屬性值定位:

XPath函數 定位表達式示例 表達式解釋
Starts-with() //img[starts-with(@alt,'div1')] 查找圖片alt屬性開始位置包含’div1’關鍵字的頁面元素
Contains() //img[contains(@alt,'g1')] 查找圖片alt屬性包含’g1’關鍵字的頁面元素

使用 XPath 的軸(axis)進行元素定位:

軸:
XPath軸(XPath Axes)可定義某個相對於當前節點的節點集:
一、child 選取當前節點的全部子元素
二、parent 選取當前節點的父節點
三、descendant 選取當前節點的全部後代元素(子、孫等)
四、ancestor 選取當前節點的全部先輩(父、祖父等)
五、descendant-or-self 選取當前節點的全部後代元素(子、孫等)以及當前節點自己
六、ancestor-or-self 選取當前節點的全部先輩(父、祖父等)以及當前節點自己
七、preceding-sibling 選取當前節點的開始標籤以前的全部同級節點
八、following-sibling 選取當前節點的結束標籤以後的全部同級節點
九、preceding 選取文檔中當前節點的開始標籤以前的全部節點
十、following 選取文檔中當前節點的結束標籤以後的全部節點
十一、self 選取當前節點
十二、attribute 選取當前節點的全部屬性
1三、namespace 選取當前節點的全部命名空間節點

img

XPath軸關鍵字 軸的含義說明 定位表達式示例 表達式解釋
ancestor 選擇當前節點上層的全部節點 //img[@alt='div2-img2']/ancestor::div 查找到alt屬性值爲div2-img的圖片,並基於圖片位置找到他上級的div頁面元素
descendant 選擇當前節點下層的全部節點注:不能超出當前節點的結束標籤 //div[@name='div2']/descendant::img 查找到name屬性值的div頁面元素,並基於div的位置找到他下級全部節點中的img頁面元素
following 選取當前節點的結束標籤以後的全部節點注:仔細體會與descendant的區別 //div[@id='div1']/following::img 超找到id 屬性值爲div1的div頁面元素,並基於div的位置找到它後面(結束標籤以後)節點中的img頁面元素
following-sibling 選取當前節點的結束標籤以後的全部平級節點 ,自上而下,離當前結點最近的爲索引1,越往下數字越大。 //a[@href='http://www.sogou.com']/follo wing-sibling::input 查找到連接地址爲http://www.sogou.com的連接頁面元素,並基於連接的位置找到它後續節點中input頁面元素
preceding 選擇當前節點開始標籤以前的全部節點 //img[@alt='div2-img2']/preceding::div 查找到alt屬性值爲div2-img2的圖片頁面元素,並基於圖片的位置找到它前面節點中的div頁面元素
preceding-sibling 選擇當前節點開始標籤以前的全部同級節點,自下而上,離當前結點最近的爲索引1,越往上數字越大。 //img[@alt='div2-img2']/preceding-sibling ::a[1] 查找到alt屬性值爲div2-img2的圖片頁面元素,並基於圖片的位置找到它前面同級節點中的第二個連接頁面元素

例子:

以下,須要根據下圖中的「河南」關鍵字,定位到前面的操做按鈕,:

查看html代碼,結構以下

1)先找到河南的元素位置

xpath=//a[contains(text(),'河南')]

2)根據dom結構,相對定位

xpath=//a[contains(text(),'河南')]/parent::li/child::i

參考:https://www.cnblogs.com/testlife007/p/4263745.html

相關文章
相關標籤/搜索