我有这样的代码:
<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
那么为什么找不到元素?
您在这里有一些问题
-
您的CSS选择器"。活性#28"在技术上是非法的。这是因为CSS选择器中的ID标识符除非将其逃脱,否则不能以数字开头。要解决您的CSS选择器需要成为
.activities#32 8
-
修复后,它与您显示的HTML一旦不匹配,因为显示的HTML的ID为" 3"不是" 28"
-
您的HTML显示的两个元素具有相同的ID(" 3")。这是非法的HTML,因为ID在页面上必须是唯一的。您是否正在尝试存储需要在页面上与该元素相关的记录的ID?如果是这样,它可能是在数据属性中(也会更改您的CSS选择器) - 尽管多次存储相同的存储也不是很有意义的。
<td class="activities" data-id="3"> <a class="btn add_activity" href="#" data-id="3">+</a> </td>