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


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


 expect(page).to have_content(“< script> var x ='test';< / script>”)

 expect (页).to have_content(“var x ='test';”)

 expect(page).to have_content(“< script>”)

 find( :xpath,“// script”)



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

答案 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)