如何使用selenium在CSV文件中编写测试结果

时间:2018-02-02 06:44:40

标签: csv selenium data-driven-tests

我必须在每行的最后一列添加结果。我必须用正确的电子邮件和密码测试用户成功登录,“PASS”附加到其他“FAIL”并继续第二行并检查每行的结果。

public static void main(String[] args) throws Exception {

System.setProperty("webdriver.chrome.driver", "D:\\Automation\\Selenium Drivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();

driver.get("http://www.facebook.com");

// This will load csv file
CSVReader reader = null;
try{
    reader = new CSVReader(new FileReader("C:\\Users\\src\\com\\elements\\demo.csv"));
}catch (Exception e) {
    e.printStackTrace();
}

String[] cell;

while ((cell=reader.readNext())!=null){
    for(int i=0;i<1;i++){
        String emailid=cell[i];
        String password=cell[i+1];

        driver.findElement(By.id("email")).sendKeys(emailid);
        driver.findElement(By.id("pass")).sendKeys(password);
        driver.findElement(By.id("loginbutton")).click();

        String outputFile = "C:\\Users\\src\\com\\elements\\demo.csv";
        try {
            // use FileWriter constructor that specifies open for appending
            CsvWriter csvOutput = new CsvWriter(new FileWriter(outputFile, true),',');
            if(driver.getTitle().equals("Log1 in to Facebook | Facebook"))
            {
                csvOutput.write("Pass"); //Your selenium result.
                //csvOutput.endRecord();              
                //csvOutput.close();
            }
            else if (driver.getTitle().equals("Log in to Facebook | Facebook"))
            {
                csvOutput.write("userName");
                csvOutput.write("password");
                csvOutput.write("Fail"); //Your selenium result.
                csvOutput.endRecord();              
                csvOutput.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

试试这段代码。

String outputFile = "test.csv";

// before we open the file check to see if it already exists
boolean alreadyExists = new File(outputFile).exists();

try {
    // use FileWriter constructor that specifies open for appending
    CsvWriter csvOutput = new CsvWriter(new FileWriter(outputFile, true),',');

    // if the file didn't already exist then we need to write out the header line
    if (!alreadyExists){
        csvOutput.write("result");
        csvOutput.endRecord();
    }
    // else assume that the file already has the correct header line
    // write out a few records
    csvOutput.write("userName");
    csvOutput.write("password");
    csvOutput.write("Pass/Fail"); //Your selenium result.
    csvOutput.endRecord();              
    csvOutput.close();

} catch (IOException e) {
    e.printStackTrace();
}

OR 如果我们想使用writeNext()方法,它将字符串数组作为参数,那么

String csv = "D:\\test.csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));

List<String[]> data = new ArrayList<String[]>();
data.add(new String[] {"India", "New Delhi"});
data.add(new String[] {"United States", "Washington D.C"});
data.add(new String[] {"Germany", "Berlin"});

writer.writeAll(data);

writer.close();

尝试其他选择。

FileWriter writer = new FileWriter("D:/test.csv",false);

        writer.append(" ");
        writer.append(',');

        writer.append("UserName");
        writer.append(',');
        writer.append("Password");
        writer.append(',');
        writer.append("Pass/Fail");
        writer.append('\n');

        //generate whatever data you want

        writer.flush();
        writer.close();