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

How to check if all element are displayed on web page?

我必须检查网页上是否显示了所有网页元素。如果未显示,请写入日志,记录究竟遗漏了哪个元素。

编写简单的测试并不难:

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 语句看起来并不是最好的解决方案。

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

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

想办法使用 webelement methods 将有关元素的信息添加到日志消息中,而不是逐一写入。这样,您就不必编写大量日志消息,而且它们始终具有有关元素的正确信息(写入错误的空间更小)。

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

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