【问题标题】:How to assert text changes of a element with WebDriver using page objects?如何使用页面对象通过 WebDriver 断言元素的文本更改?
【发布时间】:2015-02-22 10:17:05
【问题描述】:

不知何故,我被这个话题困住了。我有一个页面对象类,例如:

By job = By.xpath("//input[@id='job0']");

public Page triggerJob() {
    wait.until(ExpectedConditions.presenceOfElementLocated(job)).click();
    return this;
}

单击按钮时,会显示一个文本,例如“成功”。现在我要断言该文本显示在测试方法中,而不是在页面对象中:

public void testTriggerJob() {

    driver.get(url);

    Page = new Page(driver);

    Page.triggerJob();

}

我该怎么做?我尝试了几种方法,但都没有奏效。如果有人能给我一个提示,那就太好了 - 非常感谢!

最好的问候,

丹尼尔

【问题讨论】:

  • 那是什么文字?能否提供文字的html
  • 成功触发

标签: selenium-webdriver automation webdriver pageobjects


【解决方案1】:

你可以尝试一件事—— 在您的 PO 中创建一个本地 var,然后执行单击查找文本。然后在您的测试方法中调用一个方法,该方法将返回您要断言的文本。所以它可能有点像......

private String strSuccessMsg = "";
By spnMessage = By.id("de.xyz.jobs.Job_0");
public Page jobTriggered() {
   wait.until(ExpectedConditions.presenceOfElementLocated(job)).click();
    try{
        strSuccessMsg = wait.until(ExpectedConditions.presenceOfElementLocated(spnMessage)).getText();
    }catch(TimeOutException toe){
        strSuccessMsg = "Message not found.";
    }
    return this;
}

并添加另一个方法来返回存储的字符串。

public String getMessage() {
    return strSuccessMsg.trim();
}

然后在你的测试方法中你可以执行:

driver.get(url);
Page = new Page(driver);
Page.triggerJob();
Assert.assertEquals(Page.getMessage(), "successfully triggered", Page.getMessage());

【讨论】:

  • 不错的答案。正是我要建议的内容
  • 感谢@Saifur,但很少有人猜测可能是 OP 已经应用了这种方法。我留下的重点是他使用了什么方法...... lolz......
  • 您好,非常感谢。我尝试了类似的东西,但没有超时。问题是它只是没有找到它:org.junit.ComparisonFailure: Message not found。预期:成功触发实际:未找到消息。
  • @daniel.lozynski 你能检查一下 span 或 td 是否在框架/iframe 或模态窗口下吗?
【解决方案2】:

终于搞定了,非常感谢!问题是元素看起来几乎相同,但是在单击按钮后,它从“//input”变为“//span”,我没有看到。因为我认为这是相同的元素,所以我在两种情况下都使用了 spnMessage。在意识到它没有找到元素之后,因为请求在它出现之前就完成了。现在我使用 Thread.sleep(1000) 并且它可以工作。我想知道为什么它实际上没有等待,但是嘿;-)

public Page triggerJob() throws InterruptedException {
    wait.until(ExpectedConditions.presenceOfElementLocated(job)).click();
    Thread.sleep(1000);
    try{
        successMessage = wait.until(ExpectedConditions.presenceOfElementLocated(jobSuccessMessage)).getText();

    }catch(TimeoutException timeOutException){
        successMessage = "Message not found.";
    }
    return this;
}

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 2013-07-16
    • 2023-04-08
    • 2014-02-12
    • 2017-10-27
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多