之前遇到一個狀況大概是這樣:

<dl id="sample">
  <dt>foo1</dt><dd>bar1</dd>
  <dt>foo2</dt><dd>bar2</dd>
  <dt>foo3</dt><dd>bar3</dd>
</dl>

我想要確認的是 foo1 後面跟的是 bar1 而不是 bar2 bar3 等等,偏偏 dtdd 都沒有被加上 id 。由於卡關卡很久,先用 dd[1] 這種方式解決,但覺得應該有別的解法。

後來找到 preceding-siblingfollowing-sibling 兩組對應的 XPath Axes 可以用。

比方說我要驗證 bar1 的話,差不多是這樣:

verifyText //dl[@id='sample']/dd[preceding-sibling::dt[contains(.,'foo1')] ] bar1

簡單來說就是告訴 Selenium IDE 我要找的是 dl#sample 底下的一個 dd ,這個 dd 的前面是一個 dt ,然後這個 dt 包含了 foo1 這串字。

如果我要驗證的是 foo2 的話,就舉一反三:

verifyText //dl[@id='sample']/dt[following-sibling::dt[contains(.,'bar2')] ] foo2

突然覺得 [] 有點像是形容詞子句… a dd [which preceding sibling is a dt [which contains 'foo1'] ] 這樣。 XD


Tags: Selenium IDE Xpath preceding-sibling following-sibling


創作者介紹
創作者 repeat :D 的頭像
repeat :D

旅行的記憶

repeat :D 發表在 痞客邦 留言(0) 人氣()