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"

上面的方法是行不通的,总是通过。

我将如何验证文本的长度并在失败时打印一条消息?

任何答案将不胜感激。

4

1 回答 1

1

只是一个澄清:

当您打电话时Element.should,您实际上是在使用RSpec predicate matchers,所以:

Element.should have_content?("text")

真的只是调用:

Element.has_content?("text")

所以它做同样的事情,但第二个例子使用Capybara 节点匹配器

回到你的问题

您还可以在测试中使用其他RSpec 匹配器。由于 Capybara 使用 Nokogiri,因此您的 Element 在这里实际上是一个Nokogiri::XML::Node。因此,您可以使用该text方法获取内容并对其进行验证,如下所示:

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

这应该做你需要的。您可以根据要检查的内容text使用或inner_html方法。

于 2012-12-05T11:03:37.523 回答