【问题标题】:How to check if all element are displayed on web page?如何检查所有元素是否显示在网页上?
【发布时间】:2015-08-24 16:42:01
【问题描述】:

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

编写简单的测试并不难:

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

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

【问题讨论】:

  • 那是什么语言?
  • @RobertMoskal 它是java。我添加了适当的标签。
  • 什么是tipFrequency等会员?他们是你的班吗?
  • @RobertMoskal 所有这些成员都是网页的元素。

标签: java selenium-webdriver webpage


【解决方案1】:

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

找到一种方法来使用webelement methods 将有关元素的信息添加到日志消息中,而不是手动编写每个信息。这样,您不必编写大量日志消息,并且它们始终具有有关元素的正确信息(写入错误的空间更小)。

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

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

【讨论】:

  • 我可以在哪里初始化这个列表?在构造函数中,或者您有更好的想法如何以优雅的方式实现这一目标?
  • @nazar_art 您可以在 allUIElementsExist() 中创建列表或作为参数传递。我无法提供更具体的 Java 实现,只是 WebDriver 特定的部分。
猜你喜欢
  • 2014-04-22
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多