水豚无法 select 数据表中的单选按钮
Capybara unable to select radio button in data tables
我有点问题,我正在尝试 select data-table 数据中的单选按钮。我能够将单个数据-table 的行过滤到一个,因此它是页面上唯一出现的行...但我已经尝试过 page.choose
、page.find(<xpath>)
、page.find(<css>)
,我也尝试过在某个 css selection 内完成之前的所有操作,但我不太清楚还剩下什么可以尝试。
相关的 HTML 在这里,不幸的是,由于这是一个工作项目,我无法 post 所有内容。但是,如果我通过以下方式指定 ID,我可以点击标签:
find(:xpath, "//label[@for='approve_row_5']").click
但这实际上似乎 'select' 单选按钮。我也尝试过在过滤数据后等待 -table 结果
无论如何,这是过滤行后的 2 个单选按钮的 HTML(单选按钮位于一列中)
<td class=" align-middle">
<div class="radio">
<input type="radio" name="approve_deny_row_5" id="approve_deny_row_5_approve" value="person_approve" data-ui-verify-key="test_approve" data-ui-verify-title="2017-07-13 14:59:46 -0400">
<label for="approve_deny_row_5_approve">
<span>Approve</span>
</label>
</div>
<div class="radio">
<input type="radio" name="approve_deny_row_5" id="approve_deny_row_5_deny" value="person_deny" data-ui-verify-key="test_deny" data-ui-verify-title="2017-07-13 14:59:46 -0400" data-ui-verify-url="/irrelevant/stuff">
<label for="approve_deny_row_5_deny">
<span>Deny</span>
</label>
</div>
</td>
我想通过文本找到跨度并单击它,这通过了....但实际上 select 单选按钮。我还尝试通过特定值 select 或通过 find('input[value="test_approve"]').click
进行搜索,但也没有运气
有什么想法吗?
假设实际的无线电输入在页面上可见(并且没有隐藏以允许设置样式),适用于此的方法是
choose("Approve")
choose("Deny")
或
choose("approve_deny_row_5_approve")
choose("approve_deny_row_5_deny")
如果那些人告诉您他们找不到元素,那么很可能输入元素实际上被隐藏了(出于样式原因),您应该能够使用
choose('Approve', allow_label_click: true)
这将点击与输入关联的标签元素,而不是输入元素。这应该会产生相同的结果(设置单选按钮),除非您正在寻找的行为是基于 JS 寻找对非常特定的元素的点击(而不是输入上的更改事件)。如果恰好是这种情况,那么您需要弄清楚 JS 正在寻找点击的确切元素,或者修复 JS 以更直观的方式运行。
我有点问题,我正在尝试 select data-table 数据中的单选按钮。我能够将单个数据-table 的行过滤到一个,因此它是页面上唯一出现的行...但我已经尝试过 page.choose
、page.find(<xpath>)
、page.find(<css>)
,我也尝试过在某个 css selection 内完成之前的所有操作,但我不太清楚还剩下什么可以尝试。
相关的 HTML 在这里,不幸的是,由于这是一个工作项目,我无法 post 所有内容。但是,如果我通过以下方式指定 ID,我可以点击标签:
find(:xpath, "//label[@for='approve_row_5']").click
但这实际上似乎 'select' 单选按钮。我也尝试过在过滤数据后等待 -table 结果
无论如何,这是过滤行后的 2 个单选按钮的 HTML(单选按钮位于一列中)
<td class=" align-middle">
<div class="radio">
<input type="radio" name="approve_deny_row_5" id="approve_deny_row_5_approve" value="person_approve" data-ui-verify-key="test_approve" data-ui-verify-title="2017-07-13 14:59:46 -0400">
<label for="approve_deny_row_5_approve">
<span>Approve</span>
</label>
</div>
<div class="radio">
<input type="radio" name="approve_deny_row_5" id="approve_deny_row_5_deny" value="person_deny" data-ui-verify-key="test_deny" data-ui-verify-title="2017-07-13 14:59:46 -0400" data-ui-verify-url="/irrelevant/stuff">
<label for="approve_deny_row_5_deny">
<span>Deny</span>
</label>
</div>
</td>
我想通过文本找到跨度并单击它,这通过了....但实际上 select 单选按钮。我还尝试通过特定值 select 或通过 find('input[value="test_approve"]').click
进行搜索,但也没有运气
有什么想法吗?
假设实际的无线电输入在页面上可见(并且没有隐藏以允许设置样式),适用于此的方法是
choose("Approve")
choose("Deny")
或
choose("approve_deny_row_5_approve")
choose("approve_deny_row_5_deny")
如果那些人告诉您他们找不到元素,那么很可能输入元素实际上被隐藏了(出于样式原因),您应该能够使用
choose('Approve', allow_label_click: true)
这将点击与输入关联的标签元素,而不是输入元素。这应该会产生相同的结果(设置单选按钮),除非您正在寻找的行为是基于 JS 寻找对非常特定的元素的点击(而不是输入上的更改事件)。如果恰好是这种情况,那么您需要弄清楚 JS 正在寻找点击的确切元素,或者修复 JS 以更直观的方式运行。