如何改进WebDriver ExpectedCondition的错误消息?

时间:2012-05-30 10:50:56

标签: java testing selenium webdriver

我有一个这样的实用方法:

public void verifyTitle(int secsToWait) {
    new WebDriverWait(driver, secsToWait)
            .until(ExpectedConditions.titleIs(title));
}

失败时,消息为:

  

org.openqa.selenium.TimeoutException

     

等待标题后2秒钟超时:这里有一些标题   构建信息:版本:'2.2.1',修订版:'16551',时间:'2012-04-11   21:42:35'系统信息:os.name:'Linux',os.arch:'i386',os.version:   '3.0.0-16-generic',java.version:'1.7.0_04'驱动程序信息:   driver.version:未知

我无法找到用于提供更好错误消息的API。我想拥有的是:

  

等待标题后2秒钟超时:这里有一些标题   (但标题是:其他一些标题)

我可以使用如下所示的try / catch来实现,但也许还有其他选择吗?

public void verifyTitle(int secsToWait) {
    try {
        new WebDriverWait(driver, secsToWait)
                .until(ExpectedConditions.titleIs(title));
    }
    catch (TimeoutException e) {
        throw new AssertionError(String.format("Expected page title [%s] but was [%s]", title, driver.getTitle()));
    }
}

3 个答案:

答案 0 :(得分:5)

使用withMessage()方法:

WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.withMessage("Any message you want");
wait.until(ExpectedConditions.titleIs(title));

答案 1 :(得分:0)

您还可以与JUnit的 assertEquals 进行比较,这将提供更好的消息

如:

org.junit.ComparisonFailure: expected:<[something]> but was:<[differentthing]>

答案 2 :(得分:-1)

当你想要传递一个场景时,请调用它。

Public CustomWebDriverException(String msg,WebDriver custWebDriver){

    super(msg);

    this.driver = custWebDriver;

}

当有一个catch

时调用此构造函数

public CustomWebDriverException(Throwable e,WebDriver selenium){

    super(e.getMessage());
    this.driver = selenium;
}

让我更多地了解您的设置和其他内容..比如框架,因为您可以使用testNg或maven管理的内容很少