2

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

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。名称:'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()));
    }
}
4

3 回答 3

5

使用withMessage()方法:

WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.withMessage("Any message you want");
wait.until(ExpectedConditions.titleIs(title));
于 2012-07-18T16:48:19.850 回答
0

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

如:

org.junit.ComparisonFailure: expected:<[something]> but was:<[differentthing]>
于 2012-05-31T07:28:32.733 回答
-1

当你想通过一个场景时,请调用它。

公共 CustomWebDriverException(字符串消息,WebDriver custWebDriver){

    super(msg);

    this.driver = custWebDriver;

}

遇到问题时调用此构造函数

公共 CustomWebDriverException(Throwable e, WebDriver selenium) {

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

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

于 2012-05-30T21:08:55.737 回答