如何检查网页上是否显示了所有元素?
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());
}
我必须检查网页上是否显示了所有网页元素。如果未显示,请写入日志,记录究竟遗漏了哪个元素。
编写简单的测试并不难:
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());
}