Как сравнить элементы в списке строк с массивом списка строк? - PullRequest
0 голосов
/ 30 ноября 2018

Я добавил товары в свою корзину и перечислил их URL в списке и хочу проверить эти товары по заданной строке [] товаров, элементы которых хранятся в обратном порядке в z String [], поэтому последний элемент здесь - это первый элемент вСписок .. количество элементов равно 3 и ниже код работает для 2 элементов и выдает исключение invoker при методе assert в третьем элементе

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 голосов
/ 30 ноября 2018
  1. Перед выполнением цикла необходимо проверить размер goods и actualItems.Убедитесь, что массив и список имеют одинаковый размер, и они не являются нулевыми или пустыми.

  2. Функция listItems.get(i) и getAttribute("href") могут возвращать нулевое значение, пожалуйста, проверьте его переддобавить в список.

0 голосов
/ 30 ноября 2018

Если вас не интересует порядок, а есть соответствие между предоставленным списком goods и actualItems, вы можете сделать это:

  1. Преобразовать входной массив String[] goods вкакая-то коллекция, например List.Давайте назовем это goodsList.
  2. С goodsList, удалите все элементы, которые также находятся в actualItems.

    • Если результирующий набор пуст, это означает, что все элементы из goodsList также находятся в actualItems.
    • Если результирующий набор не пуст, он будет содержать список элементов, которыеотсутствуют в actualItems по сравнению с goodsList
  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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...