如何将variables设置为ApachePOI迭代的数据值

我有两个脚本; 一个用Apache POI从Excel工作表中读取数据,另一个用于从Apache脚本中获取接收到的数据,并将这些数据用于input字段。

这里是我的apache excel读写器脚本:

public class readExcelFinal{ static ArrayList<Double> priceList; static ArrayList<String> titleList; static ArrayList<String> descriptionList; static ArrayList<String> imageLocationList; public static void processExcelFile(String fileName) throws IOException{ priceList = new ArrayList<Double>(); titleList = new ArrayList<String>(); descriptionList = new ArrayList<String>(); imageLocationList = new ArrayList<String>(); try{ FileInputStream myInput = new FileInputStream(fileName); POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); HSSFSheet mySheet = myWorkBook.getSheetAt(2); Iterator rowIter = mySheet.rowIterator(); // For each row, while(rowIter.hasNext()){ HSSFRow row = (HSSFRow) rowIter.next(); // If there's a cell at index 0, it's a price if(row.getCell(0) != null) priceList.add(row.getCell(0).getNumericCellValue()); // If there's a cell at index 1, it's a title if(row.getCell(1) != null) titleList.add(row.getCell(1).getStringCellValue()); // If there's a cell at index 2, it's a description if(row.getCell(2) != null) descriptionList.add(row.getCell(2).getStringCellValue()); // If there's a cell at index 3, it's an image location if(row.getCell(3) != null) imageLocationList.add(row.getCell(3).getStringCellValue()); } }catch(Exception e){ e.printStackTrace(); } } public static void createTests(){ // Create an RNG to re-use Random randomGenerator = new Random(); // Iterate through the price list and create tests for (Double price : priceList){ // For each of title, description, and image location, get a random index into the list and pull the value int titleIndex = randomGenerator.nextInt(titleList.size()); String title = titleList.get(titleIndex); int descriptionIndex = randomGenerator.nextInt(descriptionList.size()); String description = descriptionList.get(descriptionIndex); int imageLocationListIndex = randomGenerator.nextInt(imageLocationList.size()); String imageLocation = imageLocationList.get(imageLocationListIndex); System.out.println("Creating test for Price " + price + "\n\tTitle:\t" + title + "\n\tDesc:\t" + description + "\n\tImg:\t" + imageLocation); } } public static String price; public static String title; public static String description; public static String imageLocation; public void setName(String price) { this.price = price; } public static String getPrice() { return price; } public void setDescription(String description) { this.description = description; } public static String getDescription() { return description; } public void setTitle(String title) { this.title = title; } public static String getTitle() { return title; } public void setImageLocation(String imageLocation) { this.imageLocation = imageLocation; } public static String getImageLocation() { return imageLocation; } } 

这是我的selenium脚本(部分):

 public class webDriver { public static void main(String[] args) throws Exception { //THIS IS WHERE IM PULLING THE METHOD INTO MY SELENIUM SCRIPT readExcelFinal.main(args); //EXCELL DATA String price = readExcelFinal.getPrice(); String title = readExcelFinal.getTitle(); String description = readExcelFinal.getDescription(); String imageLocation = readExcelFinal.getTitle(); System.out.println("Creating test for Price " + price + "\n\tTitle:\t" + title + "\n\tDesc:\t" + description + "\n\tImg:\t" + imageLocation); // The Firefox driver supports javascript WebDriver driver = new FirefoxDriver(); 

正如你可以在我的selenium脚本中看到的,我正在使用:

  System.out.println("Creating test for Price " + price + "\n\tTitle:\t" + title + "\n\tDesc:\t" + description + "\n\tImg:\t" + imageLocation); 

快速查看我的控制台中的数据,所以我不必等待整个脚本运行,看是否variables获取值。 我在控制台中回来了:

 Creating test for Price null Title: null Desc: null Img: null 

我没有从脚本中获取任何testing用例数据。

null值的原因是,你试图通过调用getXXX方法来打印variables的pricetitledescription ,但是,它们没有在代码中的任何地方设置/赋值(例如,我看不到在任何地方被调用的setXXX() ),因此,分配和打印默认值。

顺便说一下,我build议您阅读Java编程基础知识 ,以及静态和非静态variables/成员之间的区别。