Atata – 如何选中 table 内隐藏的复选框?
Atata – How to check hidden checkbox within table?
我正在使用 Atata Framework 并处理以下场景 - TD 元素中有一个带复选框的 table。我希望能够在复选框上调用 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
知道如何使复选框生效吗?
我猜你的复选框实际上是隐藏的,<label>
用作自定义渲染的包装器。由于 Atata 中几乎所有控件都默认查找可见元素,因此您可以指定 Visibility
:
[FindByIndex(0, Visibility = Visibility.Any)]
public CheckBox<Page> CheckBox { get; private set; }
它应该找到复选框。但是如果点击它不起作用(因为它可以隐藏),你可以为标签添加一个属性并点击它:
[FindFirst]
public Label<Page> CheckBoxLabel { get; private set; }
我正在使用 Atata Framework 并处理以下场景 - TD 元素中有一个带复选框的 table。我希望能够在复选框上调用 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
知道如何使复选框生效吗?
我猜你的复选框实际上是隐藏的,<label>
用作自定义渲染的包装器。由于 Atata 中几乎所有控件都默认查找可见元素,因此您可以指定 Visibility
:
[FindByIndex(0, Visibility = Visibility.Any)]
public CheckBox<Page> CheckBox { get; private set; }
它应该找到复选框。但是如果点击它不起作用(因为它可以隐藏),你可以为标签添加一个属性并点击它:
[FindFirst]
public Label<Page> CheckBoxLabel { get; private set; }