这是我正在使用的 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 获取复选框可能更安全。
解决方案 1 - :label 定位器:
如果您使用 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”属性与输入元素的“id”属性相匹配。
解决方案 2 - 将标签匹配到输入:
对于适用于 watir-classic(以及 watir-webdriver)的解决方案,您可以:
- 通过文本获取label元素
- 获取label元素的for属性
- 通过 id 获取关联的复选框,该 id 与 label 元素的 for 属性相匹配
以下内容适用于您的页面以清除复选框:
label = browser.label(:text => 'Becomes Asset')
browser.checkbox(:id => label.for).set
关于ruby - 使用 Ruby Watir,如何选择 ID 不断变化的复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678268/