天天看點

selenium xpath進階文法

# xpath 使用路徑表達式來比對xml文檔或html文檔中的節點或節點集,
# 這個路徑表達式,和我們常見的檔案夾路徑有點像
# xpath 的标準文法 //tagname[@屬性='']  # @後邊可以跟任意屬性,隻要這個元素有就可以
# //a[@href='/checkwork/manage']/i[@class='fa fa-tasks']
# 上述表達式了解為:
#   具備class屬性且class屬性值為fa fa-tasks
#   并且父元素是a标簽,且父元素具有 href 屬性,并且父元素的href屬性值為/checkwork/manage


"""
xpath中的單斜杠和雙斜杠
/ 通常用在絕對路徑,也表示父子關系
// 通常用作相對路徑,可以從文檔的任意位置開始作為起點,也表示後代關系
"""

# xpath的屬性定位表達式
# //p[@id]  比對所有具備id屬性的p标簽
# //p[@id='abc']  比對所有id屬性值為abc的p标簽
# //p[@id='abc' and @name='xyz']  xpath 允許我們使用and或or連接配接多個屬性
# //*[@class='yu']  可以用星号代替tagname,代表通配符,這個表達式比對所有class屬性值為yu的元素,不論元素标簽是什麼


# xpath 允許我們使用文本進行定位(css不支援
# //*[text()='打 印']  使用的文本就是标簽對之間的内容

# 軸定位
# //*[text()='打 印']/ancestor::span
# ancestor 選取目前節點的所有先輩元素,并且要指定先輩元素的類型

# //*[text()='打 印']/ancestor-or-self::div
# 選取目前節點所有的先輩元素,或者目前節點本身

# //*[text()='打 印']/preceding-sibling::span
# preceding-sibling 選取目前節點之前的所有同級節點

# //*[text()='打 印']/descendant::p
# descendant 選取目前節點的所有後代元素

# //*[text()='打 印']/descendant-or-self::span
# descendant-or-self 選取目前節點的所有後代元素,或者目前節點本身


# 在 xpath中,.代表目前路徑,.. 代表上層路徑