2017-01-15 14 views
-2

は、私は、ログイン後、ページの読み込みまで実行を一時停止しようとしていたC#を使用して私は、このコードを使用:ブラウザを使わずにページが読み込まれるまで待つ方法

for (int second = 0; ; second++) 
    { 
     if (second >= 60) Assert.Fail("timeout"); 
     try 
     { 
      if (driver.FindElement(By.Id("footer")).Displayed) break; 
     } 
     catch (Exception) 
     { } 
     Thread.Sleep(1000); 
    } 

をしかし、私は、ブラウザFirefoxはのThread.sleep(1000)に明らかに応答を停止したシステムエラーを取得します。どのように私はそれを防ぐためにライン?

thread.sleep()以外の実行を一時停止する別の方法はありますか?

編集: 私は今

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

を使用しますが、10秒を待たずにinconstantly実行!なぜ ??

+0

Firefoxが応答を停止した場合、これは「Thread.Sleep(1000);」とは関係ありません。 –

+0

私がsleep()をコメントすると、応答が停止するエラーが発生する – Wel

答えて

0

「titleIs」のような期待された条件で、1つのソートがカスタムWebDriverWaitを使用しています。これは、ドライバが、ページタイトルが期待どおりになるのを待っているあらかじめ定義された時間、ページをポーリングすることを意味します。 Javaの場合、それはそうです:

public Boolean waitForPageIsLoaded(String title) { 
     return new WebDriverWait(driver, 60).until(ExpectedConditions.titleIs(title)); 
} 
+0

Windows 10で同じ問題が発生しました。私は20秒を書きましたが、何も待たずに即座に実行します!! – Wel

+0

私はdriver.Manage()を試みました。タイムアウト()。ImplicitlyWait(TimeSpan.FromSeconds(10));待たずに即座に実行!どうして ? – Wel

関連する問題