0

既存のDOMのテキストノードの次の兄弟として識別できるテーブルノードを取得するために、さまざまなソリューションを試しました。

次のコードを使用しましたが、nextsibling は常に null です。

  var element = browser.Element(Find.ByText(t => t.Contains("Individual Notices")));

                        if (element != null)
                        {
                           var table = element.NextSibling as Table;
                        }

ノード「個別通知」の隣のテーブルにある行を反復処理する方法を教えてくれる人がいれば、助けていただければ幸いです。

ありがとう ここに画像の説明を入力

4

1 に答える 1

0

Contains必要な要素が見つからないため、問題が発生しています。Console.WriteLine("START" + element.Text+ "END");変数の宣言/割り当ての直後にそこに入れると、「個別の通知」以外に大量のテキスト出力が表示されるはずです。

必要な Dom 要素に "Individual Notices" テキストのみが含まれている場合は、ラムダ呼び出しを削除しFind.ByText("Individual Notices")tableテーブルを作成します。

テキストが既知の値ではないためにこれがオプションでない場合は、ラムダに結果が含まれているため親ノードが返されないように、特定の要素タイプ (例: Div) で検索できる場合があります。

編集

個々の要素をテキストで検索すると、ブラウザーの異常が原因で問題が発生することがあります。空白が追加または削除されるため、ユーザーに表示されるテキスト値が DOM に表示されるテキスト値と必ずしも一致しない場合があります。基本的には「個別通知」があると思っているかもしれませんが、WatiN には「個別通知」と表示される場合があります <- 最後のスペースを参照してください。簡単な/明白な方法が使い果たされた後に特定の要素を見つけることができない私が実行する方法は、WatiN コード内の要素を検索することによって、それを見つけるべきだと思うものを検索し、見つかった要素をフラッシュするか、および/またはに書き込むことです。コンソール。見つからない場合は、検索を広げます。必要に応じて繰り返します。

于 2012-11-20T19:05:59.013 に答える