私はこの問題をクロームで何度も経験していましたが、私の回避策はjavascriptのscrollIntoViewを使って可視のビューポートをその要素に移動することです。
あなたが「要素は見えない」というエラーになるだろう、なぜ2つの理由があります。
- 要素が セレンが開いたブラウザウィンドウの可視範囲内にないが。 scrollIntoViewを使用して
- 要素はCSSによって隠されている(それは別の要素の下にある、またはそれをfalseに設定した表示のしている)
は常には、それらの可能性のある問題の最初のをカバーします。ページビューの幅や高さにかかわらず、scrollIntoViewはIDで要素を探し、可視のブラウザ領域をその要素に移動します。本質的に、スクロールバーを物理的に画面上のその要素を見ることができるまでエミュレートします。
第二の問題はもちろん、スタイリングの問題ですが、あなたはまた、
がテストされていない生のJavaScript(その上に設定されたCSSプロパティなど)を備え、その要素を操作することができますが、これは動作するはずです:
WebDriver.executeScript(
'var elm = document.getElementById("Button1");elm.scrollIntoView(true);'
);
// Continue to access element: WebDriver.By.Id("Button1").Click();
// You could also click the element through javascript:
// Example:
// var elm = document.getElementById("Button1");elm.scrollIntoView(true);elm.click();
// if doing the above make sure you remove the WebDriver.click()l line.
これは、さまざまなプラットフォームでさまざまな画面サイズでクロムをテストする場合にも使用します。画面サイズに関係なく、scrollIntoViewを使用して要素とやりとりすると、常に一貫した結果が得られます。私は最高でセレンの薄片テストを見つけると、クロムは時にはそれが矛盾した結果を引き起こすので非常に迅速です。各インタラクションの前にこれを行うことは、おそらくセレンテストをより信頼性の高いものにするために私が作った最大の変更です。
のscrollIntoView上のいくつかの詳細情報:https://developer.mozilla.org/en/docs/Web/API/Element/scrollIntoView
私は、質問を閉じるボタンを混在しています。 –