我已将产品添加到我的购物篮并将其 URL 列在列表中,并希望根据给定的产品字符串 [] 验证这些产品 这些项目在 z String[] 中向后存储,所以这里的最后一项是列表中的第一个项目。项目的数量是 3,下面的代码适用于 2 个项目,并在第三个项目的断言方法中抛出调用程序异常
public void verifyBag(String[] goods) {
actions.clickOn(By.xpath(bagLocator));
Arrays.sort(goods);
List<WebElement> listItems = actions.driver.findElements(By.xpath(bagItems));
List <String> actualItems = new ArrayList<String>();
for(int i=0;i<listItems.size();i++)
{
actualItems.add(listItems.get(i).getAttribute("href"));
}
int j = goods.length-1;
for(int i=0;i<goods.length;i++)
{
String actualItem = actualItems.get(i);
String product = goods[j];
System.out.println(product);
//assertTrue(actualItems.get(i).contains(goods[j]));
assertTrue(actualItem.equals(product));
j--;
}
assertEquals(listItems.size(), goods.length,"Assert Number of Items in the Bag");
}
最佳答案
如果您不关心顺序,而是关心所提供的goods
列表与actualItems
之间的匹配,您可以这样做:
- 将输入数组
String[] goods
转换成一些集合,例如List
。我们称它为goodsList
。 从
goodsList
中,删除也在actualItems
中的所有项目。- 如果结果集为空,则表示
goodsList
中的所有项目都是 也在actualItems
中。 - 如果结果集不为空,它将包含
actualItems
与goodsList
相比缺少的项目列表
- 如果结果集为空,则表示
您也可以执行相反的操作:从
actualItems
中删除所有也包含在goodsList
中的项目。这会为您提供所提供列表中不存在的项目列表。
代码:
public void verifyBag(String[] goods) {
actions.clickOn(By.xpath(bagLocator));
List<WebElement> listItems = actions.driver.findElements(By.xpath(bagItems));
List <String> actualItems = new ArrayList<String>();
for(int i=0;i<listItems.size();i++)
{
actualItems.add(listItems.get(i).getAttribute("href"));
}
List<String> goodsList = new ArrayList(Arrays.asList(goods));
goodsList.removeAll(actualItems);
if(goodsList.size() == 0) {
// All goods from provided goods list are also in actualItems
}
else {
// Some items didn't match
}
关于java - 如何比较字符串列表中的元素与字符串数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550246/