3

这是我正在使用的 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 进行选择?

4

2 回答 2

3

通过标签文本而不是 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)的解决方案,您可以:

  1. 通过文本获取标签元素
  2. 获取label元素的for属性
  3. 通过它的 id 获取关联的复选框,它与标签元素的 for 属性匹配

以下将适用于您的页面以清除复选框:

label = browser.label(:text => 'Becomes Asset')
browser.checkbox(:id => label.for).set
于 2013-05-21T22:57:31.837 回答
0

要选择基于 的复选框tabindex,使用 a:css:xpath定位器应该可以解决问题:

b.checkbox(:xpath => "//input[@tabindex='8']").set
b.checkbox(:css => 'input[tabindex="8"]').set
于 2013-05-21T20:27:39.943 回答