Ruby on rails 水豚不明确匹配-应具有_内容

Ruby on rails 水豚不明确匹配-应具有_内容,ruby-on-rails,rspec,capybara,ruby-on-rails-4,Ruby On Rails,Rspec,Capybara,Ruby On Rails 4,我在一个Rails应用程序中使用了Capybara和Rspec,我的一些测试一直没有通过,这条消息如下: 失败/错误:它{应该有_内容('Error')} 水豚:模棱两可: 不明确的匹配,找到2个匹配xpath“/html”的元素 这是合乎逻辑的,因为在我的测试中,我的应用程序应该呈现两条带有“错误”内容的消息 . * 下面是我的应用程序布局: 正确%> 正确%> 你知道让它通过的方法吗 编辑 我使用了save_和'error')?是的,看起来是这样。。。但是我现在正处于其他的中间

我在一个Rails应用程序中使用了Capybara和Rspec,我的一些测试一直没有通过,这条消息如下:

失败/错误:它{应该有_内容('Error')}
水豚:模棱两可:
不明确的匹配,找到2个匹配xpath“/html”的元素
这是合乎逻辑的,因为在我的测试中,我的应用程序应该呈现两条带有“错误”内容的消息


.
  • *
下面是我的应用程序布局:


正确%>
正确%>
你知道让它通过的方法吗

编辑

我使用了
save_和
,没有发现任何额外的
html
标记,页面外也没有错误消息。但是当我删除
时,它就会工作。我真的必须有
和开头的
标签吗?我可以删除
而不产生后果吗


勒特罗奎特
.
.
.
.
.
.
.
.
.

问题似乎在于您:

  • 在页面中有两个
    标记,或者可能
  • “错误”文本出现在
    标记之外

  • 请参阅此讨论:。

    好的,我理解这个问题。当我使用
    应该有_内容时
    ,水豚搜索整个版面中的内容。但是它发现了两个
    html
    标记,这使得它失败,因为它不知道哪一个是正确的。为什么有两个
    html
    标记?因为水豚不会忽略

    我解决了我的问题,但更多的是绕道而行。我没有搜索内容,而是让Capybara搜索“error”div,其中包含“error”消息。因此,它不必搜索整个应用程序布局,也不必被两个
    html
    标记卡住


    因此,我只需将
    it{should have_content('error')}
    替换为
    it{should have_selector('div',text:'error')}
    ,它就可以工作了。

    检查关闭
    标记之外的元素。在我的例子(HAML)中,我有一个javascript标记,它的缩进不正确

    %html
      ...
    :javascript
    
    修理


    缩进:javascript使其包含在html标记中解决了问题。

    奇怪的是,我没有两个
    html
    标记,也没有出现在
    html
    标记外的“错误”…您使用的是什么版本的水豚?您的布局是什么样子的?另外,请尝试在规范中添加一个
    save_和\u open_页面
    ,以查看HTML的实际外观。感谢您的帮助,我找到了一种解决此问题的方法;-)您必须有两个HTML标记。这正是错误消息所说的。我认为这不是
    have\u selector
    的正确语法——我认为它忽略了您在那里的“错误”。不应该是:
    have_selector('div',:text=>'error')
    ?是的,看起来是这样。。。但是我现在正处于其他的中间,这给了我太多的RScript失败信息,我稍后会更正…一般的建议:你应该一次解决一个问题,而不是只是试图让你的测试通过而不了解实际发生的事情。我同意,规避错误并不是纠正错误。如果有人对实际问题有答案,那就太好了。谢谢
    %html
      ...
      :javascript
        ...