0
    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile ff = profile.getProfile("ScreenCapture");
    WebDriver driver = new FirefoxDriver(ff);
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    driver.get(url);

    Thread.sleep(8000);

    File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

    driver.quit();

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);すべきではありません 。セレンで生成された Firefox ブラウザを 15 秒後に強制終了しますか? ブラウザは座って、1 時間以上データを転送していると言います。基本的には、転送中と言ってハングするだけです...

私は ajax の重いページをキャプチャしているため、ページの読み込み後 8 秒間待機するようにすべてに要求しています。しかし、これはドライバーが 15 秒後に強制終了することとは何の関係もないはずです。

どこが間違っていますか?

詳細: Centos x64 6.4 と Firefox 10.0.12 および 10 分前の最新の Selenium。

これを回避するためにJavaでできることはありますか?

質問: Selenium で生成された Firefox ウィンドウを N 秒後に強制的に閉じるにはどうすればよいですか?

4

4 に答える 4

2

Java と一緒に Junit を使用する場合、次のようなものがあります:-

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

注 :- 記述方法の完全なスケルトンを取得するには、FF 用の Selenium IDE をダウンロードし、いくつかのテスト ケースを Java /jUnit にエクスポートします。

于 2013-11-15T01:58:00.087 に答える
-1

暗黙の待機は、15 秒後にブラウザーを強制的に閉じることはありません。

暗黙的な待機は、DOM で要素を検索しようとするときに使用されます。ページをロードしようとするときには使用されません。Selenium が 15 秒後にページの読み込みを停止するようにしたい場合は、pageLoadTimeout を設定する必要があります。これは次のように使用されます。

driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);

デフォルトのページ読み込みタイムアウトは 0 (無期限に待機することを意味します) であるため、表示されている動作です。

(ここでは、使用しているドライバー バイナリがこのメソッドを実装していることを前提としていることは明らかです。)

Selenium のタイムアウトに関する JavaDoc は、こちらから入手できます。

于 2019-03-13T14:35:24.680 に答える