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")