Selenium Data Driven Testing by CSV

Selenium Data Driven Testing by CSV

如何運用CSV定義測試資料,

讓Selenium的測試程式可以不斷的利用該測試資料執行,

常見的行為像是資料的輸入,我們可以利用CSV準備多組測試資料,

並且利用寫好的Selenium 測試讀取該CSV資料,重覆不斷的執行。

範例網站

這個網站有 firstname與lastname的欄位,我們利用這個網站為資料輸入為範例來做自動化測試。

http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_submit_nn

定義CSV

假設我們定義 users.cav測試資料如下

firstname,lastname
Jacky,Lin
Mac,Wang
Judy,Chu
Cindy,Chen

CSV程式庫下載

我們要透過一個 openCSV的程式庫來做讀取CSV資料的動作。下載之後將這個檔案 import 至 Eclipse

http://sourceforge.net/projects/opencsv/files/opencsv/3.2/opencsv-3.2.jar/download

範例程式

範例程式如下,程式執行後,就會讀取CSV資料,不斷的重覆輸入,一直到讀取最後一行為止。

[pastacode lang=”java” message=”Selenium/Java CSV Sample” highlight=”” provider=”manual”]

import java.io.FileReader;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import com.opencsv.CSVReader;

public class Selenium_CSV {

 //Provide CSV file path. It Is In D: Drive.
 String CSV_PATH="D:\\tools\\eclipse\\users.csv";
 WebDriver driver;

 
 @BeforeTest
 public void setup() throws Exception {
  driver = new FirefoxDriver();
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  driver.get("http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_submit_nn");
  
 }
 
 @Test
 public void csvDataRead() throws IOException, InterruptedException{
  
  CSVReader reader = new CSVReader(new FileReader(CSV_PATH));
  String [] csvCell;
  //while loop will be executed till the last line In CSV.
  while ((csvCell = reader.readNext()) != null) {   
   driver.switchTo().frame("iframeResult");  
   String FName = csvCell[0];
   String LName = csvCell[1];

   
   driver.findElement(By.xpath("//input[@name='firstname']")).clear();
   driver.findElement(By.xpath("//input[@name='firstname']")).sendKeys(FName);
   
   
   driver.findElement(By.xpath("//input[@name='lastname']")).clear();
   driver.findElement(By.xpath("//input[@name='lastname']")).sendKeys(LName);

   
   driver.findElement(By.xpath("//input[@type='submit']")).click();
   TimeUnit.SECONDS.sleep(3);
   driver.navigate().refresh();
   
  }  
 }
}

[/pastacode]

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *