java - 如何比较字符串列表中的元素与字符串数组列表?

标签 java selenium automation

我已将产品添加到我的购物篮并将其 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 之间的匹配,您可以这样做:

  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
    }

关于java - 如何比较字符串列表中的元素与字符串数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550246/

相关文章:

java - 打印树程序

selenium - 从 Selenium Webdriver 中的搜索结果中获取所有元素的列表

android - iOS/Android 自动化与第三方应用程序交互?

javascript - iMacros 可以单击按钮而不等待响应吗?

java - 比较 boolean 值时,JUnit Mockito 在assertEquals 中始终返回 false

java - Actionbar home/up button actual id 不同于 R.id.home

python - 如何通过 Selenium 和 Python 从 HTML DOM 获取不同的文本

python - 如何用 Selenium 获取特定元素的html源?

java - 在 Java 中使用 Selenium WebDriver 下载 zip 文件 - 下载弹出窗口总是出现

java - 为什么tomcat会永久刷新页面