Automation Anywhere中的动态表行选择

时间:2018-09-28 10:09:51

标签: xpath automationanywhere

有没有一种方法可以迭代地扫描某个表列的每一行,而行号不是。每次刷新页面时行的行数都会改变吗?

假设我有一个这样的表格出现在网页上,每一行都有单选按钮:

+---+--------+--------+--------+--------+
|   | Letter | Colour | Number | Animal |
+---+--------+--------+--------+--------+
| | A      | Red    | 111    | Dog    |
+---+--------+--------+--------+--------+
| ◯ | B      | Blue   | 222    | Cat    |
+---+--------+--------+--------+--------+
| ◯ | C      | Green  | 333    | Rabbit |
+---+--------+--------+--------+--------+

出现的列始终相同,但是行数可能不同。 假设我有一个变量:number = 222,并且必须搜索“ Number”列,直到找到匹配项,然后单击相应的单选按钮。

我如何...

  
      
  1. 反复扫描“数字”列中的所有元素?
  2.   
  3. 单击找到匹配项的行中的相应单选按钮?
  4.   

1 个答案:

答案 0 :(得分:0)

您不需要在表中进行任何迭代,只需要以这样的方式编写XPath,即它仅指向一行中具有特定值的行上的单选按钮。

假设您的HTML如下所示:

<table>
    <tbody>
        <tr>
            <th />
            <th>Letter</th>
            <th>Colour</th>
            <th>Number</th>
            <th>Animal</th>
        </tr>
        <tr>
            <td><input type="radio" /></td>
            <td>A</td>
            <td>Red</td>
            <td>111</td>
            <td>Dog</td>
        </tr>
        <tr>
            <td><input type="radio" /></td>
            <td>B</td>
            <td>Blue</td>
            <td>222</td>
            <td>Cat</td>
        </tr>
        <tr>
            <td><input type="radio" /></td>
            <td>C</td>
            <td>Green</td>
            <td>333</td>
            <td>Rabbit</td>
        </tr>
    </tbody>
</table>

在这种情况下,XPath可能如下所示:

//tr[td[3]='Blue']/td[1]/input

这意味着:在第三列中找到一个具有“蓝色”的行元素,然后,在该行的第一列中返回输入元素。

还有其他方法可以实现,XPath axes可能非常有用:

//tr/td[3][.='Blue']/preceding-sibling::td/input

这意味着:找到第三个值为'Blue'的单元格,完成后,返回嵌套在任何先前单元格中的输入。

第一个更有意义,第二个只是为了证明通常有更多的方法来进行唯一元素识别。