2

特定の css クラスを持つすべての Html コントロールを見つける必要があります。

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

クラス名の使用は、コントロールに css クラスが 1 つしかない場合に機能します。要素に複数の CSS クラスが適用されている場合、すべての CSS クラスを指定するのではなく、1 つの CSS クラスのみを指定して要素を検索できますか?

ありがとう

4

1 に答える 1

2

次のように、部分一致を実行できます。

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

これの主な欠点は、単純な文字列比較であることです。説明のために、2 つのコントロール A と B があるとします。A にはクラス "Test" があり、B にはクラス "testdiv topnav" があります。ここで「test」を検索すると、コントロール A と B の両方が選択されます。

クラスを正確に一致させるには、上記の方法を使用してできるだけ近い一致を提供し、ヘルパー関数を次のように記述します。

  1. コレクションをループする
  2. 各コントロールのクラスを取得する
  3. スペースでクラス文字列を分割します
  4. この配列をループして、それぞれが正確に一致するかどうかをテストします
  5. クラスが正確に一致する要素を保持する

注:これは明らかに最適ではありません - 誰かがより良い解決策を持っているなら、私はすべて耳にします。

乾杯、セブ

于 2013-10-22T07:28:18.590 に答える