自動化測試在定位頁面元素時,無法直接使用當前節點屬性定位。而如果使用全路徑定位,造成定位方法值過長,穩定性欠缺,給後期指令碼維護造成困難。
【示例**】
1、通過當前節點定位父節點指定子節點元素。
上圖所示:通過1的name定位2的元素。
xpath示例://*[@name="銀行卡"]/parent::*/child::*[last()]
2、通過當前節點元素定位哥哥節點子元素。
上圖所示:通過1的name定位2的元素。
xpath示例:
//xcuielementtypebutton[@name="登入"]/preceding-sibling::xcuielementtypesecuretextfield[1]
3、通過當前節點元素定位弟弟節點子元素。
上圖所示:通過1的name定位2的元素。
xpath示例:
//xcuielementtypeimage[@name="id"]/
following-
sibling::xcuielementtypestatictext[1]
軸可定義相對於當前節點的節點集。
軸名稱結果
ancestor
選取當前節點的所有先輩(父、祖父等)。
ancestor-or-self
選取當前節點的所有先輩(父、祖父等)以及當前節點本身。
attribute
選取當前節點的所有屬性。
child
選取當前節點的所有子元素。
descendant
選取當前節點的所有後代元素(子、孫等)。
descendant-or-self
選取當前節點的所有後代元素(子、孫等)以及當前節點本身。
following
選取文件中當前節點的結束標籤之後的所有節點。
namespace
選取當前節點的所有命名空間節點。
parent
選取當前節點的父節點。
preceding
選取文件中當前節點的開始標籤之前的所有節點。
preceding-sibling
選取當前節點之前的所有同級節點。
self
選取當前節點。
位置路徑可以是絕對的,也可以是相對的。
絕對路徑起始於正斜槓( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括乙個或多個步,每個步均被斜槓分割:
/step/step/...
step/step/...每個步均根據當前節點集之中的節點來進行計算。
軸(axis)
定義所選節點與當前節點之間的樹關係
節點測試(node-test)
識別某個軸內部的節點
零個或者更多謂語(predicate)
更深入地提煉所選的節點集
軸名稱::節點測試[謂語]例子
結果child::book
選取所有屬於當前節點的子元素的 book 節點。
attribute::lang
選取當前節點的 lang 屬性。
child::*
選取當前節點的所有子元素。
attribute::*
選取當前節點的所有屬性。
child::text()
選取當前節點的所有文字子節點。
child::node()
選取當前節點的所有子節點。
descendant::book
選取當前節點的所有 book 後代。
ancestor::book
選擇當前節點的所有 book 先輩。
ancestor-or-self::book
選取當前節點的所有 book 先輩以及當前節點(如果此節點是 book 節點)
child::*/child::price
選取當前節點的所有 price 孫節點。
使用xpath的軸 Axis 進行元素定位
使用xpath軸方式可依據在文件數中的元素的相對位置來進行定位,先找到乙個相對好定位的元素,在根據與它相對位置來定位其他元素,可以解決一些元素難以定位的問題。今天學習了,寫下筆記加深下印象 如家html頁面 12 title 在此處插入標題 body divid div1 inputalt div1...
selenium元素定位Xpath
1.絕對路徑定位 用標籤的層級關係來定位元素,最外層語言為html,接著是body,一級一級的往下找,如果同一級,有多個相同的標籤,那麼按照上下順序確定第幾個,例 div 2 表示當前層級下第二個div 2.元素屬性定位 利用元素的屬性來定位元素 find element by xpath 元素名或...
元素定位 XPATH定位方法總結
xpath是比較常用的一種定位元素的方式,因為它很方便,缺點是,消耗系統效能。如果xpath使用的比較好,幾乎可以定位到任何頁面元素,而且受頁面變化影響較小。xpath xml path language 是一門在 html文件中查詢資訊的語言,可用來在 html文件中對元素和屬性進行遍歷。詳細使用...