Read Data from Excel File in Selenium Webdriver - Lấy dữ liệu từ excel với selenium


Chào các bạn, chúng ta lại gặp lại nhau trong bài viết đọc dữ liệu từ file excel.
Có thể các bạn đã nghe qua là dùng các thư viện như JXL hoặc Apache POI, nhưng trong bài này, chúng ta sẽ làm với 1 thư viện khác, mình thấy cũng khá hay , đó chính là Fillo, trang chủ và hướng dẫn của nó tại đây
Nhìn qua hướng dẫn, có thể thấy cách dùng câu lệnh select như trong SQL vậy :D
OK, bài này mình sẽ sử dụng file excle định dạng xls, với dữ liệu như trên:

TestCase của bài này là login với lần lượt name và pass tương ứng từng dòng trong excel
sẽ có 4 trường hợp xảy ra như trong data.

Để có name và pass hợp lệ thì các bạn đăng ký ở đây nhé, nhập email bất kỳ, sau đó copy lại name và pass. Dùng được trong vòng 20 ngày kể từ ngày đăng ký :)

Đầu tiên, các bạn tải thư viện của Fillo về , tiếp đó add chúng vào Build Path của project java.
Tất nhiên, cần add cả thư viện của selenium nữa chứ :D

OK, viết code thôi. Tư tưởng của mình là dùng vòng While để add các data của từng cột vào trong 1 mảng. Sau đó dùng vòng For để chạy từ phần tử đầu tiên, với mỗi phần tử đó - tức là name và pass tương ứng, thì chính là dữ liệu để login.
Sau đó so sánh title mong muốn với title hiện tại , cũng như so sánh lỗi trả về khi nhập sai name và pass.


package ReadEx;



import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.TimeUnit;



import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.NoAlertPresentException;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;



import com.codoid.products.exception.FilloException;

import com.codoid.products.fillo.Connection;

import com.codoid.products.fillo.Fillo;

import com.codoid.products.fillo.Recordset;



public class Test {

 static WebDriver driver;



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

  String uName, uPass;

  String actualTitle, actualBoxtitle;



  // output mong muốn

  String EXPECT_TITLE = "Guru99 Bank Manager HomePage";

  String EXPECT_ERROR = "User or Password is not valid";

  String tc = "Test case số";



  Fillo fillo = new Fillo();

  Connection conn = fillo.getConnection("testData.xls");

  String query = "Select * from Data";

  Recordset record = conn.executeQuery(query);



  List<String> name = new ArrayList<>();

  List<String> pass = new ArrayList<>();

  // thêm name và pass vào mảng

  while (record.next()) {

   name.add(record.getField("username"));

   pass.add(record.getField("password"));

  }

  // mỗi vị trí i, lấy name và pass ở 2 cột tương ứng

  for (int i = 0; i < name.size(); i++) {

   uName = name.get(i);

   uPass = pass.get(i);



   setup();



   driver.findElement(By.name("uid")).clear();

   driver.findElement(By.name("uid")).sendKeys(uName);



   driver.findElement(By.name("password")).clear();

   driver.findElement(By.name("password")).sendKeys(uPass);



   driver.findElement(By.name("btnLogin")).click();

   try {



    Alert alt = driver.switchTo().alert();

    actualBoxtitle = alt.getText(); // lấy text của Alert

    alt.accept();

    // So sánh lỗi thực tế với lỗi mong đợi

    if (actualBoxtitle.contains(EXPECT_ERROR)) {

     System.out.println(tc + "[" + i + "]: Passed");

    } else {

     System.out.println(tc + "[" + i + "]: Failed");

    }

   } catch (NoAlertPresentException Ex) {

    actualTitle = driver.getTitle();

    // So sánh title thực tế với title mong đợi

    if (actualTitle.contains(EXPECT_TITLE)) {

     System.out.println(tc + "[" + i + "]: Login thành công");

    } else {

     System.out.println(tc + "[" + i + "]: Login lỗi");

    }



   }

   driver.close();

  }

  // đóng kết nối

  record.close();

  conn.close();

 }



 private static void setup() {

  driver = new ChromeDriver();

  driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

  driver.get("http://www.demo.guru99.com/V4/");



 }



}

Hãy để ý trong code, những thành phần quan trọng:
File excel hãy copy vào thư mục gốc của Project
testData.xls : là tên và định dạng file excel ( excel có thể có đuôi xls, có thể có xlsx)
Select * from Data: Data là tên sheet mà chứa nội dung ta cần lấy (xem lại ảnh đầu tiên của bài)


Vậy là các bạn đã làm quen với việc đọc dữ liệu excel với selenium để viết code.
Các bạn có thể xem trên trang chủ của Fillo, để có thể biết thêm nhiều cách viết câu truy vấn với các điều kiện như dùng where...
Hẹn gặp các bạn ở bài viết tiếp theo :)

0 comments:

Post a Comment