Ruby on rails 水豚-assert#u选择器(";tr#1234";)不';不起作用,但按id查找(1234)起作用

Ruby on rails 水豚-assert#u选择器(";tr#1234";)不';不起作用,但按id查找(1234)起作用,ruby-on-rails,capybara,poltergeist,Ruby On Rails,Capybara,Poltergeist,执行page.find_by_id(id)有效,但执行page.assert_选择器(“tr##{id}”)返回一个Capybara::ElementNotFound`,可能的原因是什么 作为背景,我使用的驱动程序 我有如下结构的HTML: <tbody> <tr id="1234"> <td>Rico Jones</td> <td><a href="/price_requests/5678">Price

执行
page.find_by_id(id)
有效,但执行
page.assert_选择器(“tr##{id}”)返回一个
Capybara::ElementNotFound`,可能的原因是什么

作为背景,我使用的驱动程序

我有如下结构的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>
执行此操作时,我还收到一个错误:

lead = Lead.first
within "tr##{lead.id}" do
  click_on "Price Request"
end
但是,使用
find\u by\u id
可以:

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

根据我对水豚的理解,情况不应该是这样。我做错什么了吗?

这是因为ID不应该以数字开头,因为

ID和名称标记必须以字母([a-Za-z])开头,并且可以是 后跟任意数量的字母、数字([0-9])、连字符(“-”), 下划线(“”)、冒号(“:”)和句点(“.”)


您可能会看到不一致,因为ID不应以数字开头:。您是正确的。更改
id
以字母开头解决了我的问题。实际上,我得到了一个
Capybara::Poltergeist::InvalidSelector:浏览器在尝试评估选择器
错误时引发了一个语法错误,这应该会给我提示。想创造一个我能接受的答案吗?
lead = Lead.first
find_by_id(lead.id).click_on("Price Request")