11

SeleniumWebDriverを使用してWebページのスクリーンショットを撮っています。それは素晴らしいです。ただし、日食で実行を押してからローカルドライブにスクリーンショットが表示されるまでの時間は7〜10秒です。待ち時間のほとんどはFirefoxを起動しているようです。

コード:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.cnn.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\test\\screenshot.png"));

このプロセスをどのようにスピードアップできますか?すでに開いているFirefoxブラウザを使用して新しいブラウザを開く手間を省く方法はありますか?このコードはどういうわけか重いですか?

詳細:CentOSボックスとWin7ボックスの両方でEclipseを使用して試してみました。myspeedtest.netは、22Mbpsのダウンと1Mbpsのアップを示しています。

4

6 に答える 6

11

あなたが求めているもの(WebDriver実行中のブラウザに接続できるようにすること)は、ほぼ3年前から問題になっています。現在まで、この機能はまだ追加されていません。私の知る限り、Firefoxのロードをこれ以上速くする方法はありません。ただし、他のいくつかのトリックを試すことができます。

fp.setPreference("webdriver.load.strategy", "unstable")

このページからの警告の引用:

.getまたは.clickを呼び出した後、Firefoxがページ全体が読み込まれるのを待たないようにするベータ機能があります。これにより、即時検索が中断する可能性があるため、暗黙的または明示的な待機も使用してください。これはFirefoxでのみ使用でき、他のブラウザでは使用できません。

プロファイルを使用してロードしてみて、それがまったく役立つかどうかを確認することもできます。

于 2012-10-22T22:36:54.757 に答える
5

私が他の場所で学んだことから-

  1. ブラウザ/プラグインの自動更新をオフにします
  2. IIS(または同等の)アプリのタイムアウトをゼロに設定します
  3. テストで使用するベースのセレンフィクスチャを作成します
  4. Seleniumの最新バージョンに更新します
  5. テストする前にアプリをウォームアップする
  6. 短いテスト
  7. Cookieを事前入力します。

参照:

https://sqa.stackexchange.com/questions/1988/selenium-reuse-existing-browser-session-instead-of-opening-new-windows

http://www.codeweavers.net/6-ways-to-speed-up-selenium-tests/

http://sauceio.com/index.php/2011/02/speed-up-your-selenium-tests/

お役に立てれば!

于 2012-10-23T11:37:17.890 に答える
2

このスレッドは、考えられる説明を示しています。

要約すると、Seleniumはすべてのネットワークカードをループし、仮想ネットワークカードに長い時間がかかるメソッド(getHostName)を呼び出します。それらを無効にすると、スレッド内のOPの問題が解決しました。

(私自身の場合、それらのいずれも無効にすることはできず、各テストケースの開始を待つ必要があります...)

于 2014-01-30T15:58:26.213 に答える
1

私はWindowsでも同じ問題を抱えていましたが、原因は解決に関連していましたlocalhost。この場合、それを修正する2つの方法があります。

  • localhostを127.0.0.1に置き換えます(したがって、のようなURLに移動しますhttp://127.0.0.1)。ただし、これnetwork.automatic-ntlm-auth.trusted-urisは、IPアドレスではなくホスト名を必要とするため、NTLM認証を使用してWebアプリケーションに対してテストするときに設定を混乱させます。

  • localhostを127.0.0.1に直接解決するように変更しますhosts(例:C:\ Windows \ System32 \ drivers \ etc):

    # localhost name resolution is handled within DNS itself.
    127.0.0.1       localhost
    #   ::1             localhost
    
于 2019-01-18T13:31:34.550 に答える
0

この質問はすでに回答済みだと思いますが、これが同じ問題を抱えている人の助けになることを願っています。

あなたがする必要があるのはスクリーンショットを撮ることだけです。Awesomium.NETの使用をお勧めします。 http://awesomium.com/

JavaではなくC#でこれを行うことは、構文が似ているため、大きな問題にはなりません。Linuxでアプリケーションを実行する場合は、C++もサポートします。WebDriverよりも大幅に高速になると思います。

C ++を選択する場合は、これを使用します:http: //labs.awesomium.com/capturing-web-pages-with-c/

C#.NETの場合:http://awesomium.com/docs/1_7_rc3/sharp_api/

于 2012-11-03T03:45:53.070 に答える
0

私の場合、64ビットバージョンのIEDriverServerで動作し、Value:"true"を指定してプロパティrequireWindowFocusを追加しました。

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);
于 2016-02-17T10:09:40.080 に答える