我有两个脚本;一个用Apache POI从excel表读取数据,另一个用于selenium从apache脚本获取接收的数据并将数据用于输入字段。
这是我的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;
}
}
这是我的(部分)我的硒脚本:
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);
快速查看控制台中的数据,这样我就不必等待整个脚本运行以查看变量是否正在获取值。我在控制台中找到了这个:
Creating test for Price null
Title: null
Desc: null
Img: null
我没有从我的脚本中获取任何测试用例数据。
答案 0 :(得分:1)
null
值背后的原因是,您尝试通过调用price
方法打印变量title
,description
,getXXX
,但是,未在代码中的任何位置设置/指定值(例如,我无法在任何地方看到setXXX()
),因此,default值被分配和打印。
顺便说一句,我建议您仔细阅读Java Programming Basics以及static and non static变量/成员之间的区别。