我想得到页面加载的异常,但仍然没有结果。我使用implicitlyWait设置计时器来抛出异常。
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(1, TimeUnit.MILLISECONDS);
driver.get("http://www.rambler.ru");
driver.quit();
有没有人能给我提个建议?我需要这样做,以确保页面加载不会是无限的,如果加载时间将超过我在timer ->中定义的时间,则抛出异常作为结果并跳过TC (作为失败)。
谢谢你,Volodymyr
发布于 2012-03-28 17:36:08
为什么在打开页面之前使用隐式等待?尝试使用显式等待。在ramber上找到一些主要的页面元素(例如,搜索文本框)。例如:
WebDriverWait wait = new WebDriverWait(webDriver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_to_search_textbox")));
如果搜索文本框在5秒内没有出现,则until()方法将抛出TimeoutException。
发布于 2013-04-07 03:15:09
我不同意Pavel Zorins answer会工作,因为他没有展示如何处理异常。
下面是我等待iFrame的方法。这要求您的JUnit测试类将RemoteWebDriver的实例传递给页面对象:
public class IFrame1 extends LoadableComponent<IFrame1> {
private RemoteWebDriver driver;
@FindBy(id = "iFrame1TextFieldTestInputControlID" )
public WebElement iFrame1TextFieldInput;
@FindBy(id = "iFrame1TextFieldTestProcessButtonID" )
public WebElement copyButton;
public IFrame1( RemoteWebDriver drv ) {
super();
this.driver = drv;
this.driver.switchTo().defaultContent();
waitTimer(1, 1000);
this.driver.switchTo().frame("BodyFrame1");
LOGGER.info("IFrame1 constructor...");
}
@Override
protected void isLoaded() throws Error {
LOGGER.info("IFrame1.isLoaded()...");
PageFactory.initElements( driver, this );
try {
assertTrue( "Page visible title is not yet available.", driver
.findElementByCssSelector("body form#webDriverUnitiFrame1TestFormID h1")
.getText().equals("iFrame1 Test") );
} catch ( NoSuchElementException e) {
LOGGER.info("No such element." );
assertTrue("No such element.", false);
}
}
@Override
protected void load() {
LOGGER.info("IFrame1.load()...");
Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring( NoSuchElementException.class )
.ignoring( StaleElementReferenceException.class ) ;
wait.until( ExpectedConditions.presenceOfElementLocated(
By.cssSelector("body form#webDriverUnitiFrame1TestFormID h1") ) );
}
....
注意:你可以使用see my entire working example here。
https://stackoverflow.com/questions/9904058
复制相似问题