Capybara :: Poltergeist :: InvalidSelector在ID和类中的元素上



我有这样的代码:

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

我想单击+链接。最终的表格使用JavaScript打开,因此我需要Poltergeist单击它。但是它返回错误:

Capybara::Poltergeist::InvalidSelector:
       The browser raised a syntax error while trying to evaluate css selector ".activities#28"

这是我的测试:

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

那么为什么找不到元素?

您在这里有一些问题

  1. 您的CSS选择器"。活性#28"在技术上是非法的。这是因为CSS选择器中的ID标识符除非将其逃脱,否则不能以数字开头。要解决您的CSS选择器需要成为.activities#32 8

  2. 修复后,它与您显示的HTML一旦不匹配,因为显示的HTML的ID为" 3"不是" 28"

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

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

最新更新