我使用Selenium Webdriver从网页上获取字符串列表。然后我想声明它们与相关API中的相应列表匹配。但是,我目前使用的方法似乎随机排序。有没有更好的解决方案允许我按照它们在页面上显示的顺序进行排序?
List<WebElement> props;
props = driver.findElements(
By.xpath(".//*[@id='day1']//*[contains(@id, 'property')]"));
Set<String> foundProperties = new HashSet<String>();
for(WebElement e : props){
foundProperties.add(e.getText());
}
assertEquals(foundProperties, listOfPropertiesFromApi, "{Properties from API do not match those of website");
答案 0 :(得分:0)
列表按其插入列表的顺序显示元素。 如果您发现订单是随机的并且与页面中显示的不一致,我认为您需要调查如何
driver.findElements(
By.xpath(".//*[@id='day1']//*[contains(@id, 'property')]"));
正在获取值。
我可以建议的一件事是,如果您希望此列表按字母顺序排序,那么您可以使用
Collections.sort(props)
或者使用自定义比较器进行排序
Collections.sort(props, new Comparator() {
<your compare method>
});