如何检查网页上是否显示所有元素?

时间:2015-08-23 23:54:36

标签: java selenium-webdriver webpage

我必须检查是否所有网页元素都显示在网页上。如果没有显示,则写入日志,错过哪个元素。

编写简单的测试并不困难:

public boolean allUIElementsExist() {
    boolean allPresent = true;

    if (!this.tipFrequency.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no tip `should be the same as how often you get paid`");
    }
    if (!this.tipAmount.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no tip 'Borrow equal to the amount of your purchase'");
    }
    if (!this.payBack.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'Pay it back in'");
    }
    if (!this.useTool.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'Use our easy finance tool to quickly explore payment options'");
    }
    if (!this.biWeekly.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'biWeekly'");
    }
    if (!this.semiMonthly.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'semi-monthly (twice a month)'");
    }
    if (!this.month.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'monthly'");
    }
    if (!this.withPayments.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'With payments of:'");
    }
    if (!this.includingLPP.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'including LPP'");
    }
    if (!this.startNewApplication.isDisplayed()) {
        allPresent = false;
        Logger.logFail("no 'Start new application'");
    }
    if (!this.easyfinancialLink.visibilityOfElementWait()) {
        allPresent = false;
        Logger.logFail("no 'easyfinancialLink'");
    }
    return allPresent;
}

有效。但是,查看所有if语句并不是最佳解决方案。

如何以更好的方式重新创建此代码?

1 个答案:

答案 0 :(得分:0)

将元素设为列表,遍历它们,并以相同的方式评估每个元素。

找到一种方法,使用webelement methods将有关元素的信息添加到日志消息中,而不是手动编写每个元素。这样,您就不必编写大量日志消息&他们总是掌握有关元素的正确信息(写错误的空间较小)。

示例:对于名为ElementsList的WebElements列表中的每个元素,检查是否显示了元素。如果没有,请编写一条日志失败消息,其中包含标记的名称及其包含的文本。 (如果元素没有文本,则不会向字符串添加任何文本。)

for(WebElement element : ElementsList) {
    if (!this.element.isDisplayed()) {
        allPresent = false;
        Logger.logFail("WebElement not displayed: " + element.getTagName() + " Text: " + element.getText());
  }