Вместо сравнения данных String Array с данными Array List вы можете преобразовать их в одинаковые структуры данных (как String Arrays или Array Lists), отсортировать их и сравнить их просто.
На основеВ приведенной ниже строке вы узнаете фактическую длину представлений, поэтому сохраните их в некоторой переменной и создайте один новый массив строк этой длины:
String[] actualViews = actualView.split(",");
int actualViewsSize = actualViews.length;
String xviews = new String[actualViewsSize];
Или используйте приведенный ниже размер для инициализации массива:
int size = driver.findElements(By.xpath(DATAVISUALIZATIONFIELDS)).size();
String xviews = new String[actualViewsSize];
Затем выполните цикл до размера полей визуализации данных и сохраните их во вновь созданном массиве:
for (int i = 1; i <= size; i++) {
xviews[i-1] = getText(driver, By.xpath("("+ DATAVISUALIZATIONFIELDS +")["+ i +"]"), " Filter criteria #" + i);
//System.out.println(xviews +" New View");
// System.out.println(xviews +" New View");
}
И в конце вы можете отсортировать оба String Arrays и сравнитькак показано ниже:
Arrays.sort(actualViews);
Arrays.sort(xviews);
boolean equal = true;
for(int i=0;i<actualViews.length && equal;i++) {
if(!actualViews[i].equals(xviews[i]) {
equal = false;
}
}
if(equal) {
System.out.println("=> The both String Arrays data is equal...");
} else {
System.out.println("=> The both String Arrays data is NOT equal...");
}
Но приведенный выше код работает отлично, если длина обоих массивов одинакова, в противном случае вам нужно использовать два цикла для сравнения данных, как показано ниже, и сортировка здесь необязательна:
for(int i=0;i<actualViews.length;i++) {
boolean equal = false;
for(int j=0;j<xviews.length;j++) {
if(actualViews[i].equals(xviews[j])) {
equal = true;
break;
}
}
if(equal) {
System.out.println("=> '"+actualViews[i]+"' is there in the other array...");
} else {
System.out.println("=> '"+actualViews[i]+"' is NOT there in the other array...");
}
}
Обновление 1:
Вы не ставите условия перерыва в коде, который вы изменили, и вам необходимо отделить хранениечасть, попробуйте следующий код:
public void dataVisualizationCheck1(WebDriver driver, String actualView, String reportingPeriod, String summaryReportName) throws InterruptedException {
waitForLoad(driver, 60);
waitForElementPresent(driver, 30, dataVisualizationHeader);
String[] actualViews = actualView.split(",");
boolean flag = false;
int size = driver.findElements(By.xpath(DATAVISUALIZATIONFIELDS)).size();
String[] xviews = new String[size];
for (int i = 1; i <= size; i++) {
xviews[i-1] = getText(driver, By.xpath("("+ DATAVISUALIZATIONFIELDS +")["+ i +"]"), " Filter criteria #" + i);
}
for(int i=0;i<actualViews.length;i++) {
boolean equal = false;
for(int j=0;j<xviews.length;j++) {
if(actualViews[i].equals(xviews[j])) {
equal = true;
break;
}
}
if(equal) {
System.out.println("=> '"+actualViews[i]+"' is there in the other array...");
break;
} else {
System.out.println("=> '"+actualViews[i]+"' is NOT there in the other array...");
}
}
}
Обновление 2:
Если вы все еще сталкиваетесь с проблемой, то обратитесь к приведенному ниже примеру кода, который будет проходить через обамассивы и будет пытаться найти совпадающие, несовпадающие значения:
// Suppose, below are the actual views
String actualViewsString = "Ali, Reporting Period, Business Day, Managed Geography, Business Organization, Relationship Managed Industry, Accounting Treatment, Business Unit, Managed Segment, Booking Country, Sector, Third Party / Intercompany, Show Adjustments, Approving Unit, Legal Vehicle, Legal Vehicle Country, Asset Type, Coverage, IRU Credit Org, IRU Credit Coverage, IRU Region, Senior Risk Manager, CAGID";
String[] actualViews = actualViewsString.split(", ");
for(String actualView : actualViews) {
System.out.println(actualView);
}
System.out.println("****************************************************************");
// Suppose, below are the xviews
String xviewsString = "Reporting Period, Business Day, Managed Geography, Business Organization, Relationship Managed Industry, Accounting Treatment, Business Unit, Managed Segment, Booking Country, Sector, Third Party / Intercompany, Show Adjustments, Approving Unit, Legal Vehicle, Legal Vehicle Country, Asset Type, Coverage, IRU Credit Org, IRU Credit Coverage, IRU Region, Senior Risk Manager, CAGID";
String[] xviews = xviewsString.split(", ");
for(String xview : xviews) {
System.out.println(xview);
}
// Comparing both the String arrays
for(int i=0;i<actualViews.length;i++) {
boolean matching = false;
for(int j=0;j<xviews.length;j++) {
if(actualViews[i].equals(xviews[j])) {
matching = true;
break;
}
}
if(matching) {
System.out.println("=> '"+actualViews[i]+"' matching is there in the both arrays...");
} else {
System.out.println("\n===> '"+actualViews[i]+"' matching is NOT there in the both arrays...\n");
}
}
Надеюсь, это поможет ...