Darshit Shah
Darshit Shah

Reputation: 90

How to write test result in CSV file using selenium

I have to add result at the last column of each row. I have to test user successfully login with correct email and password the "PASS" is append to last else "FAIL" and go with the second row and check the result of each row.

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

Upvotes: 3

Views: 8415

Answers (1)

Hiten
Hiten

Reputation: 877

Try this code.

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 If we want to use writeNext() method which take string array as a parameter then

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();

Try other option.

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();

Upvotes: 1

Related Questions