2017-01-15 2 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()?

Edit: Я в настоящее время

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

но выполнить непостоянно, не дожидаясь 10 секунд !! Зачем ??

+0

Если Firefox перестает отвечать на запросы, это не имеет никакого отношения к «Thread.Sleep (1000);» –

+0

когда я комментирую sleep() Я не получаю стоп ответную ошибку – Wel

ответ

0

One soultion использует пользовательский WebDriverWait с ожидаемым условием типа `titleIs '. Это означает, что драйвер будет опросить страницу за определенное количество времени, ожидая, когда заголовок страницы будет соответствовать тому, что вы ожидаете. В Java это будет так:

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

та же проблема под окнами 10. Я написал 20 секунд, но он выполняется мгновенно, без ожидания! – Wel

+0

Я пробовал driver.Manage(). Timeouts(). ImplicitlyWait (TimeSpan.FromSeconds (10)); но он выполняется мгновенно без ожидания! Зачем ? – Wel