这是我正在使用的HTML:
<div class="pbSubsection">
<table class="detailList" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td class="labelCol">
<label for="00Ni0000003bw8O">Becomes Asset</label>
</td>
<td class="dataCol col02">
<input id="00Ni0000003bw8O" type="checkbox" value="1" tabindex="8" name="00Ni0000003bw8O" checked="checked">
</td>
我需要选中复选框。
我无法使用该ID,因为我在多个组织中执行此操作,并且每个组织中的ID都不同。有没有办法可以通过标签文本或tabindex进行选择?
答案 0 :(得分:3)
通过标签文本而不是tabindex获取复选框可能更安全。
解决方案1 - :标签定位器:
如果您使用的是watir-webdriver,则可以根据其标签文本直接找到元素 - 通过:label
定位器。您可以执行以下操作:
#Exact match of label text:
b.checkbox(:label => 'Becomes Asset').set
#Partial match of label text using regex:
b.checkbox(:label => /Asset/).set
请注意,这假设标签的'for'属性与input元素的'id'属性匹配。
解决方案2 - 将标签与输入匹配:
对于适用于watir-classic(以及watir-webdriver)的解决方案,您可以:
以下内容适用于您的页面以清除复选框:
label = browser.label(:text => 'Becomes Asset')
browser.checkbox(:id => label.for).set
答案 1 :(得分:0)
要选择基于tabindex
的复选框,使用:css
或:xpath
定位器应该可以解决问题:
b.checkbox(:xpath => "//input[@tabindex='8']").set
b.checkbox(:css => 'input[tabindex="8"]').set