![](/img/trans.png)
[英]Need to compare two Strings treating as list of String elements in drool
[英]How to compare elements inside List of strings with Array List of string?
我已經將產品添加到我的購物籃中並在列表中列出了他們的URL,並希望根據產品的String []驗證這些產品,這些產品在z String []中向后存儲,因此這里的最后一項是列表中的第一項。 。項目數為3,下面的代碼適用於2個項目,並在第三個項目的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");
}
如果您不關心訂單,但關於goods
列表與actualItems
之間的匹配,您可以這樣做:
String[] goods
轉換為某個集合,例如List
。 讓我們稱之為goodsList
。 從goodsList
,刪除同樣在actualItems
中的所有項目。
goodsList
中的所有項目也在actualItems
。 actualItems
比較goodsList
您也可以執行相反的操作:從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
}
在進行循環之前,您必須檢查goods
和actualItems
的大小。 確保數組和列表具有相同的大小,並且它們都不為null或為空。
函數listItems.get(i)
和getAttribute("href")
可以返回null值,請在添加到列表之前檢查它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.