我将很快担任软件质量保证分析师的角色,并尝试通过使用Java和Selenium WebDriver开发一些基本的自动化测试脚本来练习自动化测试。我一般对自动化和Java还是陌生的,所以我想练习使用流行的旅游网站的表格作为基础。该脚本需要允许输入预先在Excel电子表格中准备的数据,基于输入数据捕获站点上的某些结果,然后将这些结果导出到同一Excel电子表格中的适当单元格中。我实际上已经创建了一个脚本,该脚本似乎可以很好地完成此任务,但是每次运行该脚本时,都会收到一条错误消息,内容为:
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
脚本的其余部分似乎运行得很顺利,但是我真的不确定该错误指的是什么或如何解决。我进入了它列出的URL,但这就像阅读一门完全的外语一样。我已经进行了很多次谷歌搜索,但是我还没有找到解决此错误消息特定实例的任何东西,我希望有人能够为我提供帮助。大多数脚本是由我在网上找到的一种或多种形式的示例组装而成的,而我将其组装起来通常可以完成我想要的事情。我不确定这是否相关,但是我已经在项目中加载了Selenium WebDriver,Apache POI和Junit的所有最新版本以及外部JAR文件。我真的对Java,Selenium WebDriver和自动化领域并不陌生,所以如果有人有解决方案,尤其是出现此错误的“原因”,将不胜感激。我的整个代码如下。
package TestCases;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class OrbitzDotComBasicFormEntry1 {
public static void main(String[] args) throws Exception {
WebDriver wd = new FirefoxDriver();
String baseURL = "http://www.orbitz.com/";
wd.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
InputStream inp = new FileInputStream("/path/to/spreadsheet/Workbook1.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
String departLocation;
String arriveLocation;
String departureDate;
String returnDate;
int rowcount=sheet.getLastRowNum();
for(int i=1;i<=rowcount;i++){
Row row = sheet.getRow(i);
Cell cell = row.getCell(4);
departLocation=sheet.getRow(i).getCell(0).getStringCellValue();
arriveLocation=sheet.getRow(i).getCell(1).getStringCellValue();
departureDate=sheet.getRow(i).getCell(2).getStringCellValue();
returnDate=sheet.getRow(i).getCell(3).getStringCellValue();
wd.get(baseURL);
//Selects the "Flights Only" radio button
wd.findElement(By.id("search.type.air")).click();
Thread.sleep(1000);
//Enter variable text into the "From" field
wd.findElement(By.name("ar.rt.leaveSlice.orig.key")).click();
wd.findElement(By.name("ar.rt.leaveSlice.orig.key")).clear();
wd.findElement(By.name("ar.rt.leaveSlice.orig.key")).sendKeys(departLocation);
//Enter variable text into the "To" field
wd.findElement(By.name("ar.rt.leaveSlice.dest.key")).click();
wd.findElement(By.name("ar.rt.leaveSlice.dest.key")).clear();
wd.findElement(By.name("ar.rt.leaveSlice.dest.key")).sendKeys(arriveLocation);
//Enter variable text into the "Leave" field
wd.findElement(By.name("ar.rt.leaveSlice.date")).click();
wd.findElement(By.name("ar.rt.leaveSlice.date")).clear();
wd.findElement(By.name("ar.rt.leaveSlice.date")).sendKeys(departureDate);
Thread.sleep(1000);
//Enter variable text into the "Return" field
wd.findElement(By.name("ar.rt.returnSlice.date")).click();
wd.findElement(By.name("ar.rt.returnSlice.date")).clear();
wd.findElement(By.name("ar.rt.returnSlice.date")).sendKeys(returnDate);
Thread.sleep(1000);
//Clicks the "Search Flights" button
wd.findElement(By.name("search")).click();
Thread.sleep(30000);
String bestPrice = wd.findElement(By.cssSelector(".money.small-cents.small-symbol")).getText();
if (cell == null)
cell = row.createCell(4);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(bestPrice);
FileOutputStream fileOut = new FileOutputStream("/path/to/spreadsheet/Workbook1.xlsx");
wb.write(fileOut);
fileOut.close();
}
wd.close();
System.out.println("The Class script has finished running");
}
}
最佳答案
我认为LINGS在上面链接了一个足够的答案,这种回答对您的情况和新角色更笼统。如果您希望使用Selenium,那么我将花一些时间阅读Selenium网页上的最佳和最差做法。
https://seleniumhq.github.io/docs/best.html#best_practices
https://seleniumhq.github.io/docs/worst.html#worst_practices