Testing 水豚说即使我看到CSS选择器也找不到

Testing 水豚说即使我看到CSS选择器也找不到,testing,ruby-on-rails-4,rspec,capybara,assert,Testing,Ruby On Rails 4,Rspec,Capybara,Assert,这是真正令人困惑的测试输出: Failure/Error: page.assert_selector("#borrower cancel") Capybara::ExpectationNotMet: expected to find css "#borrower cancel" but there were no matches # ./spec/features/borrow_dashboard_spec.rb:354:in `block (3 levels) in <top

这是真正令人困惑的测试输出:

Failure/Error: page.assert_selector("#borrower cancel")
 Capybara::ExpectationNotMet:
   expected to find css "#borrower cancel" but there were no matches
 # ./spec/features/borrow_dashboard_spec.rb:354:in `block (3 levels) in <top (required)>'
我为正确的测试做了一个save_和open_页面yes,这是Inspect元素的相关摘录:


发生了什么事?!仅供参考,在类似情况下,其他寻找借用物品的测试也表示找不到。我试着把id放在两个字母中,然后又试着把它做成一个字符串,例如,借来的物品。到目前为止还没有任何效果。

正如@AndreyBotalov所指出的,问题在于id属性包含空格,这是无效的html。最好的解决方案是修复id属性,使其不使用空格

如果这不是一个选项,则可以使用属性选择器而不是id选择器。在属性选择器中,确保在id属性值周围包含引号:

page.assert_selector('[id="borrower cancel"]')

不能包含任何空格字符Sok,因此适用于此规范,但我很好奇。。。我有很多其他的规格,其中有空间,仍然通过。当然,点击链接的多个实例“取消这个”对那里发生的事情有什么想法吗?与断言选择器不同的是,您没有将CSS选择器传递给点击链接。相反,您传递的是id属性的值,Capybara或我认为它是XPath gem,然后将其转换为有效的XPath表达式。XPath生成大概包括属性值周围的引号。明白了,我有page.assert\u选择器或带空格的东西的规范呢?我有点担心它一直在过去,但由于其他原因,你必须举个例子。具有包含空格的CSS选择器并非无效。例如,带有空格的对象将查找位于with元素内的spaces元素,with元素位于id为某物的元素内。