我正在使用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"
以上方法不起作用并且总是通过。
如何验证文本的长度并在失败时打印消息?
任何答案都将受到高度赞赏。
答案 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,}$/)
这应该做你需要的。您可以使用text
或inner_html
方法depending on what you want to check。