2012-12-05 28 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

相关问题