vba*_*ail 10 selenium selenium-firefoxdriver selenium-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);
Run Code Online (Sandbox Code Playgroud)
假设30秒后这个方法会抛出一个TimeoutException,但它不会,有时会永远挂起.这是在这些情况下产生的堆栈跟踪:
java.lang.Thread.State:java.net.SocketInputStream.socketRead0(本机方法)中的rUNNABLE,位于org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer)的java.net.SocketInputStream.read(未知源). java:160)org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84)atg.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:273)at org.apache .http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:116)org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)atg.apache.http.impl.conn.DefaultHttpResponseParser .parseHead(DefaultHttpResponseParser.java:57)在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.receiveResponseHead ER(DefaultClientConnection.java:251)在org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:223)在org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:271)在组织.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.在org.openqa.selenium.fir的HttpCommandExecutor.execute(HttpCommandExecutor.java:301)efox.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)维持在es.tao es.tao.commonservices.selenium.tests.TAORobotWebDriver $ 1.适用(TAORobotWebDriver.java:6227). commonservices.selenium.tests.TAORobotWebDriver $ 1.apply(TAORobotWebDriver.java:1)at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)at es.tao.commonservices.selenium.tests.TAORobotWebDriver .waitToLoad(TAORobotWebDriver.java:6230)at es.tao.commonservices.selenium.tests.TAORobotWebDriver.handleWaitToLoad(TAORobotWebDriver.java:6110)
我已经为firefox配置文件设置了这个首选项,但它仍然无法正常工作:
ffProfile = new FirefoxProfile();
ffProfile.setPreference("webdriver.load.strategy", "unstable");
Run Code Online (Sandbox Code Playgroud)
也有这个属性设置:
webDriver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
webDriver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
您可能想尝试 Firefox 27.01。我升级到 Firefox 28.0,它似乎破坏了我使用 watir-webdriver 所做的一些测试。我回到 27.01 并再次运行测试(如果您返回下载整个安装包作为安装程序,似乎不允许您关闭自动更新,因此它会自行更新到 28.0)。
失败是使用hover 和find_element。
归档时间: |
|
查看次数: |
7318 次 |
最近记录: |