我的查询是我需要点击表格上的第一个编辑链接。该表有7列,行将动态递增。 第一行的HTML代码:
<tr role="row" class="odd">
<td>
<form method="GET" target="_blank" action>...</form>
<td> ALLOCATION CHANGE</td>
<td class="right"></td>
<td> SATTER, KRAIG</td>
<td> CAFEMANAGER1</td>
<td class="sorting_1">03/08/2016 17:00</td>
<td class="edit_icon" id="edit_1088" onclick="on EditClick(1088)">
<span class="view_icon" style="margin-left: 40%;"></span>
</td>
</tr>
注意:随着行的增量,编辑按钮的ID会不断变化。
我的代码在黄瓜-ruby -capybara
And /^I click on the Expresso image$/ do
find(:xpath, '//*[@id="l1row"]/span').click
find('tr:odd > td:edit_icon [id="edit_"] match: first').click
sleep 10
end
错误消息:选择器无效:指定了无效或非法的选择器
答案 0 :(得分:0)
根据发布的HTML进行更新 -
注意:您的第一个&lt; td&gt;没有关闭,我假设你在问题中添加HTML时只是一个错误。
因此,从发布的HTML中你实际上没有一个编辑链接,你只需要点击一个td - 第一行中ID为“edit_”的那个
find('tr:first-child > td[id^="edit_"]').click
您在问题中发布的尝试将无效,因为没有odd
或edit_icon
这样的CSS选择器,并且找到需要有效的CSS选择器(如果指定XPath或将其设置为XPath,则需要XPath)你的默认)
上一个答案根据问题的措辞:
如果这是一个表,那么你可以用CSS做你想做的事情而不用担心XPath。
find('tr:first-child > td:last-child [id^="edit_"]')
将在第一行的最后一个td中找到id
以“edit_”开头的元素。如果你的行和列实际上不是一个表,你需要提供一些你正在谈论的HTML的示例。