Eu adicionei produtos ao meu cesto e listou sua URL em uma lista e quiser verificar estes produtos contra dada String [] de produtos os itens são armazenados para trás em z String [] de modo que o último item aqui é o primeiro item na lista. . o número de itens é de 3 e abaixo código funciona para 2 itens e lançar exceção invoker no método assert no terceiro item
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");
}
Se você não se importa com a ordem, mas sobre o jogo entre a lista fornecida de goods
e actualItems
, você pode fazer isso:
- Converter matriz de entrada
String[] goods
em alguns recolha, por exemploList
. Vamos chamá-logoodsList
. A partir
goodsList
, remover todos os itens que também estão naactualItems
.- Se conjunto resultante é vazio, significa todos os itens de
goodsList
também estãoactualItems
. - Se conjunto resultante não está vazio, ele irá conter uma lista de itens que estão faltando em
actualItems
comparação comgoodsList
- Se conjunto resultante é vazio, significa todos os itens de
Você também pode fazer o inverso: de
actualItems
, remover todos os itens que também estão contidos nogoodsList
. Isso dá-lhe lista de itens que não estavam presentes na lista fornecida.
Código:
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
}