如何将字符串列表中的元素与字符串列表中的元素进行比较?

时间:2018-11-30 02:10:26

标签: java selenium automation

我已将产品添加到购物篮并在列表中列出了它们的URL,并希望根据给定的产品String []验证这些产品 这些项目向后存储在z String []中,因此这里的最后一个项目是列表中的第一项。.项目数为3,下面的代码适用于2个项目,并在第三个项目的assert方法中引发调用者异常< / p>

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");
    }

2 个答案:

答案 0 :(得分:1)

如果您不在乎顺序,而在乎goodsactualItems提供的列表之间的匹配,则可以执行以下操作:

  1. 将输入数组String[] goods转换为某个集合,例如List。让我们称之为goodsList
  2. goodsList中删除也在actualItems中的所有项目。

    • 如果结果集为空,则表示goodsList中的所有项目均为 也在actualItems中。
    • 如果结果集不为空,它将包含actualItemsgoodsList相比缺少的项目列表
  3. 您还可以执行相反的操作:从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
    }

答案 1 :(得分:0)

  1. 在执行循环之前,您必须检查goodsactualItems的大小。确保数组和列表的大小相同,并且它们都不为null或为空。

  2. 函数listItems.get(i)getAttribute("href")可以返回空值,请在添加到列表之前对其进行检查。

相关问题