セレン - ページに画像が表示されているかどうかを確認します
-
27-09-2019 - |
質問
Webアルバムアプリケーション用のSeleniumテストのスイートを作成しています。画像が実際に表示されているかどうかをテストしたい(有効な画像データが含まれている)。そのようなことは可能ですか?
解決
画像のSRCが予想どおりであるが、画像はページに表示されない前に、この同様の状況に直面しました。
javascriptexcecutorを使用して、画像が表示されているかどうかを確認できます。
次のコードを使用します - ウェブエレメント(画像)を渡す -
Object result = ((JavascriptExecutor) driver).executeScript(
"return arguments[0].complete && "+
"typeof arguments[0].naturalWidth != \"undefined\" && "+
"arguments[0].naturalWidth > 0", image);
boolean loaded = false;
if (result instanceof Boolean) {
loaded = (Boolean) result;
System.out.println(loaded);
}
これを行うことにより、画像が実際にWebページにロードされているかどうかを確認できます。
他のヒント
Javaを使用している場合、Seleniumには名前の方法があります eval
とか、ぐらい。 JavaScript文字列を渡すと、文字列として結果が表示されます。たとえば、これを試してみることができます(1行で):
var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200
これは、ステータス200または他の何かの「偽」の「真」を返すはずです。
あなたが喜んで使用する場合 TestPlan FrontEnd to Seleniumにはいくつかのオプションがあります。画像のURLを取得したら、このURLをつかみ、返されたヘッダーを検査できます。ファイルを手動で検査したい場合は、データをファイルに保存することもできます。または、Javaにバリデーターを書いてそのデータを取得し、実際にデコードするかどうかを確認することができます。
あなたがそれを試してみたいなら、私はあなたにサンプルスクリプトを書きます。必要に応じて、簡単な画像バリデーター機能を実行することもできます。
この1つのライナー関数を使用してください。
Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);
どこ:
imageWebElement
=ページ上の画像を見つけるウェブレメント
isImageLoaded
= booleanの結果(画像が存在する場合はtrueを返し、そうでない場合はfalse)
XPathパラメーターを使用して、画像がページソースEGに表示されることを確実に確認できます。
ページソースにあるため、表示されると仮定できますが、実際にこれを検証する方法はわかりません。