编辑按钮的XPath是// * [@ id =“edit_1088”]

时间:2016-03-08 21:33:11

标签: ruby xpath cucumber capybara

我的查询是我需要点击表格上的第一个编辑链接。该表有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

错误消息:选择器无效:指定了无效或非法的选择器

1 个答案:

答案 0 :(得分:0)

根据发布的HTML进行更新 -

注意:您的第一个&lt; td&gt;没有关闭,我假设你在问题中添加HTML时只是一个错误。

因此,从发布的HTML中你实际上没有一个编辑链接,你只需要点击一个td - 第一行中ID为“edit_”的那个

find('tr:first-child > td[id^="edit_"]').click

您在问题中发布的尝试将无效,因为没有oddedit_icon这样的CSS选择器,并且找到需要有效的CSS选择器(如果指定XPath或将其设置为XPath,则需要XPath)你的默认)

上一个答案根据问题的措辞:

如果这是一个表,那么你可以用CSS做你想做的事情而不用担心XPath。

find('tr:first-child > td:last-child [id^="edit_"]')

将在第一行的最后一个td中找到id以“edit_”开头的元素。如果你的行和列实际上不是一个表,你需要提供一些你正在谈论的HTML的示例。