2013-03-21 60 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

相關問題