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]