2013-03-21 59 views
0

我想测试某些内容是否不包含任何HTML。什么是简单而干净的方式呢?测试文本是否不包含任何HTML

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

不能正常工作,因为它无法在&lt;strong&gt;Lorem但传<strong>Lorem。可能是由于水豚帮助其用户转义HTML的方式。

解决xpaths的工作,但让我想知道是否没有更简单的解决方案。

page.should_not have_selector(:xpath, "//div[@class="description"]/*") 

有没有内置的方法来检测一些文本在水豚中被剥离了HTML?

回答

0

水豚的has_content?(和因此have_content)方法旨在检查呈现给用户的文本,而不是像你期望的元素的html源文本。

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

  • 如果.description HTML源代码是&lt;strong&gt;Lorem,用户看到<strong>Lorem。水豚搜索此文本为/\<.*\>/并找到它。
  • 如果.description的html源是<strong>Lorem,用户会看到Lorem。水豚在/\<.*\>/搜索此文字,但没有找到它。

如果要检查元素的HTML源文件,你can use javascript's function innerHTML

source_text = page.evaluate_script("document.querySelector('.description').innerHTML") 
source_text.should_not =~ /\<.*\>/ 
+0

,需要我跑通过硒这些步骤,这是慢了很多,更复杂(我已经测试部分JS相互作用,但尽可能少)。我认为'has_selector'路线是可取的,那么:'page.should_not have_selector(“。description strong”)' – berkes 2013-03-22 08:24:05

+1

@berkes我不知道你使用哪个驱动程序。查看链接问题中的其他答案。他们用于RackTest – 2013-03-22 08:57:04

相关问题