2

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

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

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

谢谢

4

1 回答 1

2

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

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

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

要精确匹配一个类,您可以使用上述方法提供尽可能接近的匹配,并编写一个辅助函数来:

  1. 循环遍历集合
  2. 获取每个控件的类
  3. 在空格上拆分类字符串
  4. 循环遍历此数组并测试每个数组是否完全匹配
  5. 保留类完全匹配的元素

注意:这显然不是最佳选择 - 如果有人有更好的解决方案,我会全力以赴。

干杯,塞布

于 2013-10-22T07:28:18.590 回答