質問

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に表示されることを確実に確認できます。

ページソースにあるため、表示されると仮定できますが、実際にこれを検証する方法はわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top