2

Selenium の実行中に Web ページのスクリーンショットを撮ろうとしています。この目的のために次のコードを使用しています

WebDriver augmentedDriver = new Augmenter().augment(seleniumDriver);
            File scrFile = ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE);

これで、このメソッドが呼び出されるたびにブラウザーが自動的にデフォルトのサイズになり、再び最大化されることを除いて、私の目的を完全に果たします。

これは、スクリーンショット関数が呼び出されるたびに続きます。スクリーンショットを撮り、他のJava関数を使用するためにセレンWebドライバーを使用していない場合、問題を解決できます。

誰かが同様の問題を抱えているかどうか/なぜ私がこの問題を抱えているのか知りたかった. そして、回避策はありますか?

4

4 に答える 4

2
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(scrFile, new File("D:\\screenshot.jpg"));

このコードは間違いなく役立ちます

于 2012-10-30T13:02:21.987 に答える
1

ページ サイズに合わせて、スクリーンショットをできるだけ小さくするか、ページ全体が収まるように大きくしようとします。煩わしいだけでなく、他の問題の原因にはならないため、実際のビューポートだけのスクリーンショットを撮るよりも優れた解決策と見なされます。このスクリーンショットでは、調べようとしているページの重要な部分が欠落している可能性があります。

満足できない場合は、RobotとそのcreateScreenCapture()方法を使用してください。


または、Firefox でのみ機能しますがFirefoxDriver's、スクリーンショットのメソッドをオーバーライドしてみてください。テストされていないため、許可されるかどうかわかりません。

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("FirefoxDriver.prototype.screenshot = function(a){};");

そして(それで十分でない場合)多分

js.executeScript("FirefoxDriver.prototype.saveScreenshot = function(a,b){};");

ここから推測。実際のスクリーンショット コードはこちらです。関数を、スクロール可能な最大値をFirefoxDriver.prototype.screenshot取らない独自の関数に置き換えることができます...heightwidth

于 2012-06-08T20:42:02.533 に答える