Seleniumを使用していくつかのテストを作成しようとしているGWTアプリケーションがあります。
XPathを使用して、テスト用のページ上の要素を識別しています。値はGWTによって自動生成され、変更される可能性があるため、使用id
は機能しません。id
次のようにラベルでボタンを見つけることができることに気付いたとき、物事は順調に進み始めました。
//button[.='OK']
しかし、複数のテストを実行し始めると、問題が発生し始めました。問題は、Javascriptによって生成されたGWTアプリのすべての異なる「ページ」がHTMLの非表示<div>
要素に残っていることであることに気付きました。つまり、Seleniumのテストでは、現在のビューに表示されているボタンではなく、非表示のボタンをクリックすることがありました。
Firebugを使用してHTMLを調べると、GWTは属性に追加することで<div>
要素を非表示にしているようです。これは、次のようにすべての非表示の[OK]ボタンを見つけることができることを意味します。display: none
style
//div[contains(@style,'display: none')]//button[.='OK']
これにより、すべての非表示のOKボタン、つまり、にあること<div>
によって非表示になっている祖先を持つボタンが検索さdisplay: none
れstyle
ます。
私の質問は、XPathを使用して表示されている[OK]ボタンのみを検索するにはどうすればよいですか?に祖先<div>
要素がないボタンを見つけるにはどうすればよいですか?display: none
style