【发布时间】:2018-08-06 20:21:35
【问题描述】:
我在 GridView 中有一堆 input[type=submit] 按钮。这些按钮的ids 和names 虽然可以预测,因为它们使用索引号,但不太适合使用 SpecFlow 和编码的 UI 测试进行自动化。我发现很难搜索这些按钮元素。
传递给浏览器的 HTML 的 sn-p:
<input type="submit" id="abc_xyz_0" data-task-id="123" value="Apply">
<input type="submit" id="qrs_tuv_0" data-task-id="345" value="Renew">
每一行的按钮文本都是通用的(“应用”和“更新”),但data-task-id 属性是唯一的。我想使用此属性和值来标识要单击的按钮。我正在尝试使用SearchProperties 和FilterProperties,但我不断收到异常:
System.NotSupportedException:此控件不支持属性 DataTaskId。
我如何尝试找到控件:
HtmlInputButton button = new HtmlInputButton(document);
button.SearchProperties["data-task-id"] = "123";
// or button.SearchProperties["DataTaskId"] = "123";
一些额外的细节:
- Windows 7
- Internet Explorer 11
- 从
localhost发送的网站并在 Internet 选项安全设置中标记为“受信任”
更新:感谢 marcel de vries 和 AfroMogli 的回答。 Marcel 使用 JavaScript 来查找元素,而 AfroMogli 使用纯 C# 和 CodedUI API。两个答案都同样有效,我没有注意到两者之间的性能差异。两个同样好的解决方案。
【问题讨论】:
标签: c# asp.net .net coded-ui-tests