Capybara 测试文本是否不包含任何HTML

Capybara 测试文本是否不包含任何HTML,capybara,Capybara,我想测试一些内容是否不包含任何HTML。什么是简单而干净的方法 page.find(".description").should_not have_content /\<.*\>/ 是否有一种内置的方法来检测Capybara中的某些文本是否已从HTML中剥离?Capybara的具有内容?(因此具有内容)方法旨在检查呈现给用户的文本,而不是您所期望的元素的HTML源中的文本 因此,我认为水豚的行为是正确的: 如果.description的html源代码是strongLorem,则用

我想测试一些内容是否不包含任何HTML。什么是简单而干净的方法

page.find(".description").should_not have_content /\<.*\>/

是否有一种内置的方法来检测Capybara中的某些文本是否已从HTML中剥离?

Capybara的
具有内容?
(因此
具有内容
)方法旨在检查呈现给用户的文本,而不是您所期望的元素的HTML源中的文本

因此,我认为水豚的行为是正确的:

  • 如果
    .description
    的html源代码是
    strongLorem
    ,则用户会看到
    Lorem
    。水豚在该文本中搜索
    /\/
    ,并找到它
  • 如果
    .description
    的html源代码是
    Lorem
    ,则用户会看到
    Lorem
    。Capybara在该文本中搜索
    /\/
    ,但没有找到它
如果要检查元素的源html,请执行以下操作:

source\u text=page.evaluate\u脚本(“document.querySelector('.description').innerHTML”)
source_text.should_not=~/\/

这要求我通过Selenium运行这些步骤,这要慢得多,也要复杂得多(我已经测试了一些Js交互,但尽可能少)。我认为
有选择器
路线更可取,那么:
page.should\u没有选择器(“.description strong”)
@berkes我不知道你用的是哪种驱动程序。请看链接问题中的其他答案。它们是用来测试的
page.should_not have_selector(:xpath, "//div[@class="description"]/*")
source_text = page.evaluate_script("document.querySelector('.description').innerHTML")
source_text.should_not =~ /\<.*\>/