我正在尝试根据以下要求检查和取消选中复选框:
如果其他一些文字设置了复选框,我需要取消选中该复选框
<table class="adm">
<tbody>
<tr class="action">
<td width="20px">
<input class="checkbox" type="checkbox" name="checkbox1">
</td>
<td>
<span class="label">
<script id="start"></script>
Action1
<script id="end"></script>
</span>
<p class="desc">
<script id="start"></script>
Description1
<script id="end"></script>
</p>
</td>
</tr>
</tbody>
</table>
<table class="adm">
<tbody>
<tr class="action">
<td width="20px">
<input class="checkbox" type="checkbox" name="checkbox2">
</td>
<td>
<span class="label">
<script id="start"></script>
Action2
<script id="end"></script>
</span>
<p class="desc">
<script id="start"></script>
Description2
<script id="end"></script>
</p>
</td>
</tr>
</tbody>
</table>
并且有5个复选框类,如上所述。 所以,我需要检查:
因此,需要根据要求设置复选框,并取消选中所有其他复选框。
我发现这是检查/取消选中所有复选框:
checkbox_class = /checkbox/
@browser.checkboxes(:class => checkbox_class).each do |checkbox|
if(!checkbox.checked?)
p "checkbox not set"
checkbox.set
else
p "checkbox set"
checkbox.clear
end
end
但是根据我的要求,我无法满足这个要求,试过这个:
checkbox_class = /checkbox/
action_class = /label/
@browser.checkboxes(:class => checkbox_class).each do |checkbox|
if(!@browser.span(:class=>action_class,:text=>"some_action").checkbox.checked?)
p "checkbox not set"
checkbox.set
else
p "checkbox set"
checkbox.clear
end
end
答案 0 :(得分:0)
鉴于标签和复选框是由它们的共享祖先(表元素)相关联的,我认为迭代表格更容易。在每个表格中,您可以检查标签文本,然后决定是否设置/清除复选框。
以下将设置“Action1”复选框并取消选中其余部分:
action = 'Action1'
browser.tables(:class => 'adm').each do |table|
# Check if the label matches the action we want to check
value = (table.span(:class => 'label').text == action)
# Set the checkbox if the label matches, otherwise clears
table.checkbox.set(value)
end
答案 1 :(得分:0)
我认为以下内容可行:
action_trs = @ browser.trs(class:'action')
action_trs.each do |action_tr|
if action_tr.td(index: 1).span.text == ‘some_action’
action_tr.checkbox.set unless action_tr.checkbox.set?
else
action_tr.checkbox.clear
end
end
祝你好运! :)