自動化された統合テストのために、WatiN 2.1 を使用して Internet Explorer を駆動しています。私のテストの 1 つでは、メニューを作成するボタンをクリックした後、動的に作成されたポップアップ メニューの項目を選択したいと考えています。メニュー自体は、特定のクラスで順序付けられていないリストを作成する jQuery プラグインです。
私は WatiN 2.0 の新しい Find.BySelector メソッドを使用して、この特定のクラスを介して検索していますが、うまく機能します。ただし、複数のメニューを作成するテストでは、その時点で表示されているメニューを選択するのに苦労しています。このため、:visible フィルターを使用して、表示されるメニューのみに結果を制限すると考えました (一度に表示できるのは 1 つだけです)。ただし、次のコードを使用すると:
WebBrowser.Current.ElementOfType<List>(Find.BySelector("li.fg-menu:visible"));
「System.Runtime.InteropServices.COMException: HRESULT からの例外: 0x80020101」というメッセージとともに WatiN.Core.Exceptions.RunScriptException がスローされます問題を修正しません。:visible フィルターがなくても問題なく動作します。そのセレクターをブラウザーのコンソール ウィンドウで (jQuery を使用して) 直接実行すると、必要なものが返されます。
これを修正するには、WatiN の組み込み機能を使用して、独自の JavaScript を実行して要素を返すことができますが、Find.BySelector で :visible を使用して成功した人が他にいるかどうか疑問に思っています。