Atata - 如何检查表中隐藏的复选框?

时间:2018-02-14 16:45:27

标签: c# automated-tests atata

我正在使用Atata Framework并处理以下情况 - 在TD元素中有一个带复选框的表格。我希望能够在复选框上调用Click()方法,但无法使其正常工作。

截断的HTML如下:

<table data-v-c4547572="" class="invGrid">
        <tr data-v-c4547572="" row-id="3ed5bcf4-473d-43ae-991a-ffe36d5e0a53" class="row-index-0">
            <td data-v-c4547572="" class="column-index-0 checkbox-col">
                <input data-v-c4547572="" type="checkbox" element-id="3ed5bcf4-473d-43ae-991a-ffe36d5e0a53" class="">
                <label data-v-c4547572="" for="3ed5bcf4-473d-43ae-991a-ffe36d5e0a53"></label>
            </td>
            <td data-v-c4547572="" class="column-index-1">
                <span data-v-c4547572="" class="val-name">Some text</span>
                <span data-v-c4547572="" class="arrow pull-right dsc"></span>
            </td>
        </tr>
    </tbody>
</table>

我正在使用的代码是:

// The page class:

[FindByCss(".invGrid")]
public Table<GroupsRow, Page> Inventory { get; set; }

// The row class:

public class GroupsRow : TableRow<Page>
{
    [FindByIndex(0)]
    public CheckBox<Page> CheckBox { get; set; }

    [FindByCss(".val-name")]
    public Text<Page> Text { get; set; }
}

作为补充说明,在复选框上调用Exists()会产生错误:

inv.CheckBox.Exists(); // false

知道如何让复选框正常运作吗?

1 个答案:

答案 0 :(得分:1)

我猜你的复选框实际上是隐藏的,<label>用作自定义渲染的包装。由于Atata中几乎所有控件都默认查找可见元素,因此您可以指定Visibility

[FindByIndex(0, Visibility = Visibility.Any)]
public CheckBox<Page> CheckBox { get; private set; }

应该找到复选框。但如果单击它将无效(因为它可以隐藏),您可以为标签添加属性并单击它:

[FindFirst]
public Label<Page> CheckBoxLabel { get; private set; }