什么是在Capybara中验证元素文本长度的正确方法?

时间:2012-12-05 09:25:24

标签: ruby cucumber capybara

我正在使用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 个答案:

答案 0 :(得分:1)

只是澄清一下:

当您致电Element.should时,您确实在使用RSpec predicate matchers,所以:

Element.should have_content?("text")

真的只是调用:

Element.has_content?("text")

所以它做同样的事情,但第二个例子使用Capybara node matcher

回到你的问题

您还可以在测试中使用其他RSpec matchers。由于Capybara使用Nokogiri,你的元素在这里真的是Nokogiri::XML::Node。因此,您可以使用text方法获取内容并进行验证,如下所示:

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

这应该做你需要的。您可以使用textinner_html方法depending on what you want to check