10

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 at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer. java:160) org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84) で org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:273) で org.apache org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140) の .http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:116) org.apache.http.impl.conn.DefaultHttpResponseParser の.parseHead(DefaultHttpResponseParser.java:57) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:260) org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:283) で org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:251) で org.apache.http.impl org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:271) の .conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:223) org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123) ) org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:682) で org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486) で org.apache.http. impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) で org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) で org.openqa.selenium .remote.HttpCommandExecutor.fallBackExecute(HttpCommandExecutor.java:322) org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:301) org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java) :165) org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:362) で org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:568) で org.openqa.selenium で。 remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:504) at es.tao.commonservices.selenium.tests.TAORobotWebDriver$1.apply(TAORobotWebDriver.java:6227) at es.tao.commonservices.selenium.tests.TAORobotWebDriver$1.apply(TAORobotWebDriver.java:1) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208) ) es.tao.commonservices.selenium.tests.TAORobotWebDriver.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);
4

2 に答える 2

0

未解決のバグが見つかりました: https://code.google.com/p/selenium/issues/detail?id=6955 - 可能であれば、テスト ケースを提供してください。主に、問題がまだ発生している最小限のスクリプトを含む縮小されたホスト ページです。そのため、確実に繰り返して追跡できます。

ときどき、Google が独自のツールを使用しているのかどうか自問することがあります.... その会社がどれほど巨大であるかを考えると、彼らは何年も前にそのバグに遭遇するべきだった.

于 2014-09-13T11:30:07.890 に答える