如何检测带有水豚的<script>标签的存在

时间:2015-09-07 10:43:23

标签: ruby-on-rails rspec capybara

我在页面上有一个脚本标记,内容为var x ='test';。如果我查看页面源代码,那么内容肯定就在那里。

&#xA;&#xA;

但是我不能让capybara认识到这一点。&#xA;我试过了:

&#xA;&#xA;
  expect(page).to have_content(“&lt; script&gt; var x ='test';&lt; / script&gt;”)&#xA;&#xA; expect (页).to have_content(“var x ='test';”)&#xA;&#xA; expect(page).to have_content(“&lt; script&gt;”)&#xA;&#xA; find( :xpath,“// script”)&#xA;  
&#xA;&#xA;

这些都不起作用,我没有想法......

&#XA;

2 个答案:

答案 0 :(得分:2)

have_content(及其别名has_text)用于检查元素的文本内容,而不是用于检查页面中的元素。您想要使用have_selector。如果您要检查页面中的至少一个脚本元素,那么

expect(page).to have_selector(:css, 'script', visible: false, minimum: 1)

如果只检查一个可以执行的脚本元素

expect(page).to have_selector(:css, 'script', visible: false, count: 1)

显然,您可以调整计数/最小数量,或使用最大值或两者之间的选项。 visible:false选项非常重要,因为脚本元素在页面上不可见,因此在没有它的情况下无法找到。

答案 1 :(得分:0)

尝试以下代码 -

带有script属性且包含src文件的

.js代码。

all('script').find { |s| s[:src].match /.js$/ }.should_not be_nil 
带有内部html javascript代码的

script标记,

all('script').find { |s| s[:src].nil? }.count.should_not be(0)