【问题标题】:Capybara - have_css matches empty string when it's supposed not toCapybara - have_css 在不应该匹配空字符串时匹配
【发布时间】:2021-08-26 21:21:30
【问题描述】:

Capybara 的新手。测试以下代码。值可以是动态的,包括 ""(空)。

within("#foo") do
  expect(page).to have_css("td:nth-child(2)", text: value)
end

问题是:当 value = "" 时,即使 td:nth-child(2) 中有文本,它也匹配为 true。 可能的原因:内容是异步渲染的,当 Capybara 第一次检查时,文本还没有出现(即“”),所以是真的。

只有当文本最后确实为空时才匹配true,并且当它不为空时才匹配false?

【问题讨论】:

    标签: ruby selenium testing rspec capybara


    【解决方案1】:

    默认情况下,Capybaras text 参数会匹配子字符串,因此“”将匹配任何文本内容(因为“”是所有内容的子字符串)。如果您想要完全匹配,那么您需要这样做

    expect(page).to have_css("td:nth-child(2)", text: value, exact_text: true)
    

    或者更简洁

    expect(page).to have_css("td:nth-child(2)", exact_text: value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多