He añadido productos a mi carro y aparece su dirección URL en una lista y que desee comprobar estos productos contra dada String [] de los productos de los elementos se almacenan hacia atrás en z String [] por lo que el último punto aquí es el primero elemento de la lista. . el número de elementos es de 3 y por debajo de código funciona por 2 artículos y lanzar una excepción al invocador del método de aserción en el tercer punto
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");
}
Si no se preocupan por el orden, sino sobre el partido entre proporcionado lista de goods
y actualItems
, se puede hacer esto:
- Convertir matriz de entrada
String[] goods
en un poco de recogida, por ejemploList
. Vamos a llamarlogoodsList
. Desde
goodsList
, eliminar todos los elementos que también están enactualItems
.- Si conjunto resultante está vacía, significa que todos los artículos
goodsList
están también enactualItems
. - En caso de resultar conjunto no está vacío, contendrá lista de elementos que faltan en
actualItems
comparación congoodsList
- Si conjunto resultante está vacía, significa que todos los artículos
También se puede hacer a la inversa: desde
actualItems
, eliminar todos los elementos que también están contenidos engoodsList
. Eso le da lista de elementos que no estaban presentes en la lista proporcionada.
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
}