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