我正在尝试使用Capybara单击按钮。我尝试了所有我能想到的组合,但没有运气。试图点击“删除”链接。只有当您将鼠标悬停在表格中的行上时,才会显示删除链接。
这是HTML:
<tbody>
<tr class="even" id="informal_6">
<td class="columnOrganizationNameColumnValue" id="informal_7">
<div>
<a id="showLink_0" title="Organization Details" class="viewLink">
Institution / Automation
</a>
</div>
<div class="gridMenuDescription">
</div>
<div class="gridMenu">
<a id="gridMenuDirectLink_1" title="Edit Organization" class="gridMenuItem">
edit
</a>
<a id="gridMenuDirectLink_2" class="gridMenuItem delete">
delete
</a>
</div>
</td>
</tbody>
我想注意一下,“gridMenu”div,当你使用Firebug将鼠标悬停在它上面时,它转向:
<div class="gridMenu hover gridMenuShow">
我试过的一些事情,但没有运气:
find(:xpath, '//*[(@id = "gridMenuDirectLink_2")]').click
find("#informal_6").find("#informal_7").find(".gridMenu.hover.gridMenuShow").find(".gridMenuItem.delete").click
连连呢?
答案 0 :(得分:5)
经过大量尝试尝试不同的事情后,我能够使用此代码:
find('#informal_6').hover.find('.gridMenu').hover.find('.gridMenuItem.delete').click
答案 1 :(得分:0)
尝试使用以下代码将鼠标悬停在该行上。
page.driver.browser.mouse.move_to(page.driver.browser.find_element(:ID =&gt; “中定位器”))
答案 2 :(得分:0)
我有一个日历界面,其中AJAX编辑&amp;只有将鼠标悬停在每个日历条目上时,才会显示删除链接。它很好而且紧凑,但我无法让Capybara点击那些动态显示的元素,并且在父元素上使用.hover
似乎没有什么区别。所以我尝试了一种目前运作良好的蛮力方法:
# Use Jquery to force display a hidden element. Useful for getting at links
# that are dynamically displayed.
# Call it like: js_show(".entry.scheduled[data-id=\"#{@da3.id}\"] .actions")
def js_show(selector)
page.execute_script(" $('#{selector}').show(); ")
end
def js_hide(selector)
page.execute_script(" $('#{selector}').hide(); ")
end
现在,当我需要点击仅在悬停等上显示的元素时,我可以调用js_show(".whatever.container.selector")
强制显示链接,然后page.find(...).click
有效。