我将很快担任软件质量保证分析师的角色,并尝试通过使用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

10-08 05:48
查看更多