Capybara :: Poltergeist ::带有id和class的元素的InvalidSelector

时间:2017-03-01 08:02:09

标签: capybara poltergeist

我有这样的代码:

+

我想点击Capybara::Poltergeist::InvalidSelector: The browser raised a syntax error while trying to evaluate css selector ".activities#28" 链接。生成的表单用javascript打开,所以我需要Poltergeist点击它。但它返回一个错误:

it "can open form", js: true do
  within(".activities#28") do
    click_link "+"
  end
end

这是我的测试:

{{1}}

那为什么它找不到元素?

1 个答案:

答案 0 :(得分:1)

这里有一些问题

  1. 您的CSS选择器“.activities#28”在技术上是非法的。这是因为CSS选择器中的id标识符不能以数字开头,除非它被转义。要解决您的CSS选择器需要成为.activities#\32 8

  2. 的问题
  3. 一旦修复,它将与您显示的HTML不匹配,因为显示的HTML的ID为“3”而不是“28”

  4. 您显示的HTML有两个具有相同ID(“3”)的元素。这是非法的HTML,因为ID必须在页面上是唯一的。您是否尝试存储需要与页面上的该元素绑定的记录的ID?如果是这样的话,它可能会在数据属性中(这也会改变你的CSS选择器) - 尽管多次存储它也不是很有意义。

    <td class="activities" data-id="3">
      <a class="btn add_activity" href="#" data-id="3">+</a>
    </td>