1

做有效的可能原因是什么page.find_by_id(id),但做page.assert_selector("tr##{id}") returns aCapybara::ElementNotFound`?

作为背景,我正在为 Capybara 使用Poltergeist驱动程序。

我的 HTML 结构如下:

<tbody>
  <tr id="1234">
    <td>Rico Jones</td>
    <td><a href="/price_requests/5678">Price Request</a></td>
  </tr>
  <tr id="2345">
    <td>Rico Jones</td>
    <td><a href=/price_requests/6789">Price Request</a></td>
  </tr>
</tbody>

page.driver.debug通过使用Poltergeist 的功能并查看测试生成的实际 HTML ,我已确认我的 HTML 按预期出现。

当我在测试中加入这样的内容时,我收到一条Capybara::Poltergeist::InvalidSelector错误消息The browser raised a syntax error while trying to evaluate the selector

lead = Lead.first
assert_selector "tr##{lead.id}"

执行此操作时我也遇到错误:

lead = Lead.first
within "tr##{lead.id}" do
  click_on "Price Request"
end

但是,使用find_by_id作品:

lead = Lead.first
find_by_id(lead.id).click_on("Price Request")

根据我对Capybara的理解,不应该这样。难道我做错了什么?

4

1 回答 1

2

这是因为 ID 不应以数字开头,如此处所示

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

于 2013-09-01T10:05:24.393 回答