如何在编码的ui中找到所有具有css类的元素?

时间:2012-11-06 11:51:34

标签: coded-ui-tests

我需要找到所有具有给定css类的Html控件。

var htmlControl = new HtmlControl(document);
htmlControl.SearchProperties[HtmlControl.PropertyNames.Class] = @class;
var uiTestControlCollection = htmlControl.FindMatchingControls();

当控件上只有一个css类时,使用类名可以正常工作。如果我在元素上应用了多个css类,我可以通过仅指定一个css类而不是所有css类来搜索该元素吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以执行部分​​匹配,如下所示:

htmlControl.SearchProperties.Add(HtmlControl.PropertyNames.Class, @class, PropertyExpressionOperator.Contains);
var uiTestControlCollection = htmlControl.FindMatchingControls();

主要的缺点是它只是一个简单的字符串比较。为了说明,假设您有两个控件A和B. A有类“Test”,B有类“testdiv topnav”。现在,如果您执行“test”搜索,将选择控件A和B.

要准确匹配类,可以使用上述方法提供尽可能匹配的close,并将辅助函数写入:

  1. 循环收集
  2. 获取每个控件的类
  3. 拆分空格
  4. 上的类字符串
  5. 遍历此数组并测试每个数组以获得完全匹配
  6. 保持类完全匹配的元素
  7. 注意:这显然不是最佳的 - 如果有人有更好的解决方案,我会全力以赴。

    干杯, SEB