2014-01-16 49 views
2

何時使用XPath,爲什麼?何時在RSpec + Capybara中使用XPath

以下各行均與提交按鈕匹配「發佈」值。使用XPath有什麼優點嗎?

it { should have_selector("input[type=submit][value='Post']") } 

it { should have_xpath("//input[@value='Post']") } 

此外,是否有任何情況下使用XPath在RSpec中至關重要?

回答

0

XPath允許更具體地「指定」你所指的元素,而只是選擇元素「按名稱」,有時會給你實際引用的元素帶來不明確性。特別是在複雜的網頁上,您經常會收到水豚的投訴,即「多個元素匹配」。在這種情況下,您可以使用XPath指定您實際引用的元素。

如果您有歧義,也可以加

match: :prefer_exact 

以「引導」的選擇,例如如果既有「密碼」和「確認密碼」字段中都存在你的頁面上,你可以把類似

fill_in 'Password', with: @visitor[:password], match: :prefer_exact 

我個人的經驗是,通過使用prefer_exact,你可以多爲化解歧義,這樣你很少需要XPath ...

相關問題