我需要创建函数,该函数需要验证Web UI上的所有列标题,即姓名、年龄、性别和身高:
我准备好了列标题的xpath:
List<Webelement> allLinks= driver.findElements(By.xpath("//button[@class='sort-header-btn']"));
单个工作XPath为:
//button[@class='sort-header-btn' and contains(text(),'Name')]
我不能像这样单独存储每个xpath,我决定迭代每个xpath:
Iterator<WebElement> itr = allLinks.iterator();
while(itr.hasNext()) {
if(itr.next().getText().contains("Name")){
System.out.println("Name column is validated");
break;
}
else{
System.out.println("Name column is not validated");
break;
}
if(itr.next().getText().contains("Gender")){
System.out.println("Gender column is validated");
break;
}
else{
System.out.println("Gender column is not validated");
break;
}
//same way I follow remaining columns
}
这是正确的做法吗?
1条答案
按热度按时间3ks5zfa01#
从我的Angular 来看,您所描述的迭代WebElement列表并检查每个元素的文本以验证列标题的方法通常是正确的,人们可能会有不同的看法。
但是,您可以对代码进行一些改进:
使用for循环而不是迭代器。这将使代码更易读,更容易理解。
您可以使用switch case语句,而不是对每列使用一系列if-else语句,以使代码更具可读性和可维护性。
使用
boolean
变量来检查是否有列标题未被验证也是一种很好的做法,如果有列标题未被验证,那么测试可能失败。此外,您还可以使用
assertTrue()
方法Assert列标题出现在WebElements
列表中,这将使代码更加健壮,并允许您以更优雅的方式处理任何异常。