Firefox WebDriver зависает в ожидании загрузки страницы

Иногда в моем тесте, выполненном с Selenium 2.41 и протестированном с Firefox 28, выполнение зависает в ожидании загрузки страницы.

Это условие ожидания:

int time = 30;    
WebDriverWait wait = new WebDriverWait(webDriver, time);
ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() {
   public Boolean apply(WebDriver driver) {
      return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
    }
};
wait.until(pageLoadCondition);

Предполагается, что через 30 секунд этот метод вызовет исключение TimeoutException, но это не так, иногда он зависает навсегда. Это трассировка стека, созданная в следующих ситуациях:

java.lang.Thread.State: RUNNABLE на java.net.SocketInputStream.socketRead0(собственный метод) на java.net.SocketInputStream.read(неизвестный источник) в org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSession. Java:160) в org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84) в org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java.3): 27.http.impl.conn..parseHead(DefaultHttpResponseParser.java:57) по адресу org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:260) по адресу org.apache.http.impl.AbstractHttpClientConnection.Hepp org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:251) в org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:223) в org.apache.http.protocol.HttpRequestExttp0.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123) в org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:682) в org.apimpeflient.pl..execute(DefaultRequestDirector.java:486) в org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) в org.apache.http.impl.client.CloseableHttpClient.extep (Close.jtpClient.exte) по адресу org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) по адресу org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute(HttpCommand.ecutor.javaselen.a.open.ote.qa.open) at0.HttpCommandExecutor.execute(HttpCommandExecutor.java:301) в org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:165) в org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java.exri.Wever.WereWeWe. Java:568) на org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:504) на es.tao.commonservices.selenium.tests.TAORobotWebDriver$1.apply(TAORobotWebDriver.java:6ta7. at. at. at. 767). Обыкновенные.waitToLoad (TAORobotWebDriver.java:6230) по адресу es.tao.commonservices.selenium.tests.TAORobotWebDriver.handleWaitToLoad(TAORobotWebDriver.java:6110)

Я установил этот параметр для профиля Firefox, но он все еще не работает:

ffProfile = new FirefoxProfile();
ffProfile.setPreference("webdriver.load.strategy", "unstable");

Также установите эти свойства:

webDriver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
webDriver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);

2 ответа

Вы можете попробовать Firefox 27.01. Я обновил до Firefox 28.0, и он, казалось, сломал некоторые тесты, которые я делал, используя watir-webdriver. Я вернулся к 27.01, и тесты снова запустились (если вы вернетесь назад, загрузите весь установочный пакет только для установки, похоже, вы не отключите автоматическое обновление, поэтому он обновится до 28.0).

Неудачи использовали hover и find_element.

Обнаружена неразрешенная ошибка: https://code.google.com/p/selenium/issues/detail?id=6955 - если можете, предоставьте контрольный пример, в первую очередь уменьшенную страницу хоста с минимальными сценариями, где проблема все еще возникает так что это может быть надежно повторено и прослежено.

Иногда я спрашиваю себя, использует ли Google свои собственные инструменты вообще... они должны были столкнуться с этой ошибкой давным-давно, учитывая, насколько велика эта компания.

Другие вопросы по тегам