私が見つけたのはthesethreepotential answersですが、それらはすべてHtmlUnit APIを使用しています。 HtmlUnit APIとonly use seleniumやブラウザ設定用の設定を使用しないようにするにはどうすればよいですか?セレン運転htmlunitでイメージを自動的にダウンロードさせるにはどうしたらいいですか?
答えて
私が知る限り、HtmlUnit
(セレンの有無にかかわらず)ですべての画像を自動的にダウンロードする方法はありません。あなたが投稿したリンクが示すように、次のコードを使用してページ上のすべての画像をダウンロードするにはHtmlUnit
を強制することができます。
DomNodeList<DomElement> imageElements = htmlPage.getElementsByTagName("img");
for (DomElement imageElement : imageElements) {
HtmlImage htmlImage = (HtmlImage) imageElement;
try {
// Download the image.
htmlImage.getImageReader();
}
catch (IOException e) {
// do nothing.
}
}
しかし、Selenium HtmlUnitDriver
を使用した場合、現在のページを取得することは容易ではありません。複数の方法がありますが、すべてがprotected
HtmlUnitDriver.lastPage()
メソッドにアクセスする必要があります。 One way to access this method is through reflection.もう1つの解決策は、protected
メソッドも同じパッケージ内のクラスからアクセスできるという事実を利用することです。packages can be the same across jars。後者の機能やデザインの欠陥を組み合わせることで、私は反射を避けるソリューションを考え出すことができました。代わりに、通常のクラスをHtmlUnitDriver
--- org.openqa.selenium.htmlunit
と同じパッケージに追加するだけです。
package org.openqa.selenium.htmlunit;
import java.io.IOException;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlImage;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class HtmlUnitUtil {
private HtmlUnitUtil() {
throw new AssertionError();
}
public static void loadImages(HtmlUnitDriver htmlUnitDriver) {
// Since we are in the same package (org.openqa.selenium.htmlunit)
// as HtmlUnitDriver, we can access HtmlUnitDriver's protected
// lastPage() method.
HtmlPage htmlPage = (HtmlPage) htmlUnitDriver.lastPage();
DomNodeList<DomElement> imageElements =
htmlPage.getElementsByTagName("img");
for (DomElement imageElement : imageElements) {
HtmlImage htmlImage = (HtmlImage) imageElement;
try {
// Download the image.
htmlImage.getImageReader();
}
catch (IOException e) {
// do nothing.
}
}
}
}
残念ながら、画像を読み込むたびにこのコードを手動で呼び出す必要があります。 HtmlUnitDriver
の機能要求(htmlunit-driver #40)を作成して、画像を自動的にダウンロードするオプションを追加しました。この機能をご希望の場合は、その問題に投票してください。
これは、HtmlUnit 2.25-snapshotの一部です(webClient.getOptions().setDownloadImages(true)
)。
HtmlUnit-Driver 2.25スナップショット機能DOWNLOAD_IMAGES_CAPABILITY
またはhtmlUnitDriver.setDownloadImages(true)
。
- 1. RDPを自動的に転送して使用するにはどうしたらいいですか?
- 2. イメージはRailsでアップロード時に自動的に回転します
- 3. ブラウザから動的に生成されたファイルをダウンロードするにはどうすればいいですか?
- 4. Emacsで自動的に開いたウィンドウを閉じるにはどうしたらいいですか?
- 5. Crystal Reports Designerにイメージを動的にロードするにはどうしたらいいですか?
- 6. backbone-js:新しいコレクションを自動的に初期化するにはどうしたらいいですか?
- 7. セレンは:セレンは自動的にRefererヘッダ
- 8. Jsonモデルをシーン内で自動回転させるにはどうすればいいですか?
- 9. スケーリングジョブを入力バケット上で再帰的に動作させるにはどうしたらいいですか?
- 10. Processing.JSでは、y軸についてイメージを回転させるにはどうすればよいですか?
- 11. Greasemonkeyでテキストを自動的に変更するにはどうしたらいいですか?
- 12. 自動回転イメージにイベントを追加するにはどうすればよいですか?
- 13. AWS cliでの自動運転停止?
- 14. XMLソースコメントをテキスト文書に自動的にエクスポートするにはどうしたらいいですか?
- 15. デバイスを自動的にアンマウントしてデバイスの電源を切るにはどうしたらいいですか?
- 16. QMediaPlayerを自動破壊するにはどうしたらいいですか?
- 17. WebからViewFlipperにアンドロイドで動的にイメージをロードするにはどうすればいいですか?
- 18. web2pyがHTMLエンティティを自動的にエンコードするのを防ぐにはどうしたらいいですか?
- 19. Raspberry Pi:自動起動されたTkinter UIを削除するにはどうしたらいいですか?
- 20. 毎日のPentahoレポートを自動的に作成するにはどうしたらいいですか?
- 21. ユーザーのバックアップを自動的に作成するにはどうしたらいいですか?
- 22. icloudカレンダーを自動的に作成するにはどうしたらいいですか?
- 23. Rubyテストを自動的に実行するにはどうしたらいいですか?
- 24. javucript - ステップ定義ファイルを自動的に生成するにはどうしたらいいですか?
- 25. Eclipseビューを自動的に閉じるにはどうしたらいいですか?
- 26. UIButtonでイメージを回転するにはどうすればいいですか?
- 27. ピクチャーボックスでイメージを回転するにはどうすればいいですか?
- 28. C++でメモリリークを自動的に検出するにはどうしたらよいですか?
- 29. どのように自動的にjavascriptでファイルをダウンロードしますか?
- 30. iPhoneでスクリーンショットイメージを回転するにはどうしたらいいですか?
どのような画像がありますか?詳細を共有できますか? – Andersson
画像タグで参照されている画像:。 – Vernon
あなたは 'Java'のみで回答を受け入れますか? – Andersson