2012-12-05 53 views
0

我使用的水豚用黃瓜和紅寶石在Capybara驗證元素文本長度的正確方法是什麼?

env.rb 
Capybara.current_driver = :selenium 

我有許多語言網站,我想驗證下應該有100個字符的最小長度的文本元素,否則,顯示一個消息

<p id="user_text">sometext</p> 

在「USER_TEXT」的文字可以是任何語言,所以

(("#user_text").text.length > 99) == true 

Element.should have_content?("text") won't work because I don't know the text in "user_text" 

以上方法是不行的,總是通過。

我將如何驗證文本的長度並在失敗時打印消息?

任何答案將不勝感激。

回答

1

只是澄清:

當你使用的是RSpec predicate matchers實際上調用Element.should,所以:

Element.should have_content?("text")

真的只是調用:

Element.has_content?("text")

s它做同樣的事情,但第二個例子使用Capybara node matcher

再回到你的問題

您也可以在測試中使用其他RSpec matchers。由於水豚使用Nokogiri,您的元素真的是Nokogiri::XML::Node在這裏。所以,你可以使用text方法來獲得內容,並驗證它,就像這樣:

Element.text.should match(/^.{99,}$/)

這應該做你所需要的。您可以使用textinner_html方法depending on what you want to check

+0

感謝的人,它幫助:) – amjad

相關問題