簡體   English   中英

順序謂詞和組合謂詞之間的區別

[英]Difference between sequential and combined predicates

在Selenium中,我編寫了一個xpath並且兩者都檢索到相同的結果。

//a[@role='tab'][text()=' Assets']
//a[@role='tab' and text()=' Assets']

兩者含義是否相同?

在大多數情況下, a[b][c]a[b and c]具有完全相同的效果。 有兩個例外需要注意:

  • 如果謂詞是數字的,或者依賴於position()last() (我稱這些位置謂詞 ),則它們不是等效的。 例如, a[@x][1]選擇第a具有@x屬性a元素,而a[1][@x]選擇第a具有@x屬性a元素(否則不選擇任何內容)。 相比之下, a[1 and @x]將整數1轉換為布爾值true() ,因此僅表示a[@x]

  • 如果對bc評估因動態錯誤而失敗,則行為可能有所不同。 這里的確切規則取決於您所使用的XPath版本,並且老實說規則會給實現留有余地,但是如果要確保在b為假的情況下不會對c進行評估,則需要格外小心。 (這在XPath 1.0中幾乎沒有關系,因為很少有表達式會引發動態錯誤。)

當您將方括號([])添加到XPath時,您要添加一個條件,因此

第一行添加2個條件

與通過and添加條件產生相似的結果

通常,您不使用第一行,因為它的可讀性較差,

主要是因為此語法用其他語言表示矩陣

 // return a random m-by-n matrix with values between 0 and 1 public static double[][] random(int m, int n) { 

參見教程

5個帶謂詞的XPath

謂詞是可以為真或為假的表達式

它會附加到給定的位置路徑中,並將優化結果

一個以上謂詞可以附加到位置路徑中並在位置路徑中(!)

第一個是謂詞,這意味着它檢查a[@role='tab']是否為真,然后繼續進行[text()=' Assets']

第二個是使用and運算符的正義and因此它驗證兩個都是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM