Khung tự động hóa Selenium: Theo hướng dữ liệu, Theo hướng từ khóa & Hỗn hợp

Mục lục:

Anonim

Selenium Framework là gì?

Các Selenium Khung là một cấu trúc mã mà làm cho mã bảo trì dễ dàng và hiệu quả. Nếu không có khuôn khổ, người dùng có thể đặt “mã” và “dữ liệu” ở cùng một vị trí mà không thể sử dụng lại cũng như không thể đọc được. Các khung công tác tạo ra các kết quả có lợi như tăng khả năng tái sử dụng mã, tính di động cao hơn, giảm chi phí bảo trì tập lệnh, khả năng đọc mã tốt hơn, v.v.

Chủ yếu có ba loại khung được tạo bởi Selenium WebDriver để tự động hóa các trường hợp thử nghiệm thủ công

  • Khung kiểm tra theo hướng dữ liệu
  • Khung kiểm tra theo hướng từ khóa
  • Khung thử nghiệm hỗn hợp

Khung theo hướng dữ liệu trong Selenium

Data Driven Framework trong Selenium là một phương pháp tách tập dữ liệu khỏi test case. Khi các tập dữ liệu được tách khỏi trường hợp thử nghiệm, nó có thể dễ dàng được sửa đổi cho một chức năng cụ thể mà không cần thay đổi mã. Nó được sử dụng để tìm nạp các trường hợp và bộ thử nghiệm từ các tệp bên ngoài như Excel, .csv, .xml hoặc một số bảng cơ sở dữ liệu.

Để đọc hoặc viết một Excel, Apache cung cấp một thư viện POI rất nổi tiếng. Thư viện này đủ khả năng để đọc và ghi cả định dạng tệp XLSXLSX của Excel.

Để đọc các tệp XLS , một triển khai HSSF được cung cấp bởi thư viện POI.

Để đọc XLSX, việc triển khai XSSF của thư viện POI sẽ là lựa chọn. Hãy nghiên cứu chi tiết các triển khai này.

Chúng tôi đã tìm hiểu về Kiểm tra theo hướng dữ liệu trong hướng dẫn trước của chúng tôi

Khung theo hướng từ khóa trong Selenium

Keyword Driven Framework trong Selenium là một phương pháp được sử dụng để tăng tốc độ kiểm tra tự động bằng cách tách các từ khóa cho bộ chức năng và hướng dẫn chung. Tất cả các thao tác và hướng dẫn cần thực hiện đều được viết trong một số tệp bên ngoài như trang tính Excel. Người dùng có thể dễ dàng kiểm soát và chỉ định các chức năng mà họ muốn kiểm tra.

Đây là cách khung hoàn chỉnh trông như thế nào

Như bạn có thể thấy, đó là một khuôn khổ 5 bước. Hãy nghiên cứu nó từng bước một cách chi tiết

Bước 1)

  • Tập lệnh trình điều khiển Execute.java sẽ gọi ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java có tập lệnh POI để đọc dữ liệu từ Excel

Bước 2)

  • ReadGuru99ExcelFile.java sẽ đọc dữ liệu từ TestCase.xlsx
  • Đây là cách trang tính trông như thế nào-
  • Theo các từ khóa được viết trong tệp Excel, khung công tác sẽ thực hiện hoạt động trên giao diện người dùng.
  • Ví dụ: chúng ta cần nhấp vào nút 'Đăng nhập'. Tương ứng, Excel của chúng tôi sẽ có từ khóa 'Nhấp chuột'. Bây giờ AUT có thể có hàng trăm nút trên một trang, để xác định một nút Đăng nhập, trong Excel, chúng ta sẽ nhập Tên đối tượng làm tên loginButton & loại đối tượng làm tên (xem hàng được đánh dấu ở hình trên). Loại đối tượng có thể là Xpath, CSS tên hoặc bất kỳ giá trị nào khác

Bước 3) ReadGuru99ExcelFile.java sẽ chuyển dữ liệu này đến tập lệnh trình điều khiển Execute.java

Bước 4)

  • Đối với tất cả các phần tử web giao diện người dùng của chúng tôi, chúng tôi cần tạo một kho lưu trữ đối tượng nơi chúng tôi sẽ đặt bộ định vị phần tử của chúng (như Xpath, tên, đường dẫn CSS, tên lớp, v.v.)
  • Execute.java (tập lệnh trình điều khiển của chúng tôi) sẽ đọc toàn bộ Kho lưu trữ đối tượng và lưu trữ nó trong một biến
  • Để đọc kho lưu trữ đối tượng này, chúng ta cần một lớp ReadObject có phương thức getObjectRepository để đọc nó.

LƯU Ý: Bạn có thể nghĩ tại sao chúng ta cần tạo một kho lưu trữ đối tượng. Câu trả lời giúp bảo trì mã. Ví dụ: chúng tôi đang sử dụng nút có tên = btnlogin trong 10 trường hợp thử nghiệm khác nhau. Trong tương lai, nhà phát triển quyết định thay đổi tên từ btnlogin để gửi. Bạn sẽ phải thực hiện một thay đổi trong tất cả 10 trường hợp thử nghiệm. Trong trường hợp kho lưu trữ đối tượng, bạn sẽ thực hiện thay đổi chỉ một lần trong kho lưu trữ.

Bước 5)

  • Trình điều khiển sẽ chuyển dữ liệu từ Kho lưu trữ đối tượng & Excel sang lớp UIOperation
  • Lớp UIOperation có các chức năng thực hiện các thao tác tương ứng với các từ khóa như CLICK, SETTEXT, v.v. được đề cập trong excel
  • Lớp UIOperation là một lớp Java có triển khai mã thực tế để thực hiện các hoạt động trên các phần tử web

Dự án hoàn chỉnh sẽ giống như-

Hãy xem xét một ví dụ:

Kịch bản thử nghiệm

  • Chúng tôi đang thực hiện 2 trường hợp thử nghiệm
  • Trường hợp thử nghiệm 1:
  • Goto http://demo.guru99.com/V4/
  • Nhập ID người dùng
  • Nhập mật khẩu
  • Nhấp vào Đặt lại
  • Trường hợp thử nghiệm 2:
  • Goto http://demo.guru99.com/V4/
  • Nhập ID người dùng
  • Nhập mật khẩu
  • Bấm Đăng nhập

object.properties

url = http: //demo.guru99.com/V4/

tên người dùng = uid

password = mật khẩu

title = barone

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

gói excelExportAndFileIO;nhập java.io.File;nhập java.io.FileInputStream;nhập java.io.IOException;nhập org.apache.poi.hssf.usermodel.HSSFWorkbook;nhập org.apache.poi.ss.usermodel.Sheet;nhập org.apache.poi.ss.usermodel.Workbook;nhập org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public sheet readExcel (String filePath, String fileName, String sheetName) ném IOException {// Tạo một đối tượng của lớp Tệp để mở tệp xlsxFile file = new File (filePath + "\\" + fileName);// Tạo một đối tượng thuộc lớp FileInputStream để đọc tệp excelFileInputStream inputStream = new FileInputStream (tệp);Workbook guru99Workbook = null;// Tìm phần mở rộng của tệp bằng cách tách tên tệp trong đăng ký và chỉ nhận tên phần mở rộngString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kiểm tra điều kiện xem tệp có phải là tệp xlsx khôngif (fileExtensionName.equals (". xlsx")) {// Nếu là tệp xlsx thì hãy tạo đối tượng của lớp XSSFWorkbookguru99Workbook = new XSSFWorkbook (inputStream);}// Kiểm tra điều kiện nếu tệp là tệp xlselse if (fileExtensionName.equals (". xls")) {// Nếu là tệp xls thì hãy tạo đối tượng của lớp XSSFWorkbookguru99Workbook = new HSSFWorkbook (inputStream);}// Đọc trang tính bên trong sổ làm việc theo tên của nóTrang tính guru99Sheet = guru99Workbook.getSheet (sheetName);trả về guru99Sheet;}}

ReadObject.java

hoạt động trọn gói;nhập java.io.File;nhập java.io.FileInputStream;nhập java.io.IOException;nhập java.io.InputStream;nhập java.util.Properties;lớp công khai ReadObject {Thuộc tính p = new Properties ();public Properties getObjectRepository () ném IOException {// Đọc tệp kho lưu trữ đối tượngInputStream stream = new FileInputStream (new File (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// tải tất cả các đối tượngp.load (luồng);trả lại p;}}

UIOperation.java

hoạt động trọn gói;nhập java.util.Properties;nhập org.openqa.selenium.By;nhập org.openqa.selenium.WebDriver;công khai lớp học {Trình điều khiển WebDriver;công khai UIOperation (Trình điều khiển WebDriver) {this.driver = trình điều khiển;}public void thực hiện (Thuộc tính p, Hoạt động chuỗi, Tên đối tượng chuỗi, Loại đối tượng chuỗi, Giá trị chuỗi) ném Ngoại lệ {System.out.println ("");switch (operation.toUpperCase ()) {trường hợp "BẤM":// Thực hiện nhấp chuộtdriver.findElement (this.getObject (p, objectName, objectType)). click ();phá vỡ;trường hợp "SETTEXT":// Đặt văn bản trên điều khiểndriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (value);phá vỡ;trường hợp "GOTOURL":// Lấy url của ứng dụngdriver.get (p.getProperty (value));phá vỡ;trường hợp "GETTEXT":// Lấy văn bản của một phần tửdriver.findElement (this.getObject (p, objectName, objectType)). getText ();phá vỡ;mặc định:phá vỡ;}}/ *** Tìm phần tử BẰNG cách sử dụng loại đối tượng và giá trị* @param p* @param objectName* @param objectType* @trở về* Ngoại lệ @throws* /private By getObject (Thuộc tính p, String objectName, String objectType) ném Exception {// Tìm theo xpathif (objectType.equalsIgnoreCase ("XPATH")) {return By.xpath (p.getProperty (objectName));}// tìm theo lớpelse if (objectType.equalsIgnoreCase ("CLASSNAME")) {return By.className (p.getProperty (objectName));}// tìm theo tênelse if (objectType.equalsIgnoreCase ("NAME")) {return By.name (p.getProperty (objectName));}// Tìm theo csselse if (objectType.equalsIgnoreCase ("CSS")) {return By.cssSelector (p.getProperty (objectName));}// tìm theo liên kếtelse if (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (objectName));}// tìm theo liên kết một phầnelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {return By.partialLinkText (p.getProperty (objectName));} khác{ném mới Exception ("Kiểu đối tượng sai");}}}

ExecuteTest.java

gói testCases;nhập java.util.Properties;nhập hoạt động.ReadObject;nhập hoạt động.UIOperation;nhập org.apache.poi.ss.usermodel.Row;nhập org.apache.poi.ss.usermodel.Sheet;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.firefox.FirefoxDriver;nhập org.testng.annotations.Test;nhập excelExportAndFileIO.ReadGuru99ExcelFile;lớp công khai ExecuteTest {@Kiểm trapublic void testLogin () ném Exception {// VIỆC CẦN LÀM Sơ khai phương thức được tạo tự độngWebDriver webdriver = new FirefoxDriver ();Tập tin ReadGuru99ExcelFile = new ReadGuru99ExcelFile ();Đối tượng ReadObject = new ReadObject ();Thuộc tính allObjects = object.getObjectRepository ();Hoạt động UIOperation = UIOperation mới (webdriver);// Đọc trang từ khóaTrang tính guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Tìm số hàng trong tệp excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Tạo một vòng lặp trên tất cả các hàng của tệp excel để đọc nófor (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

Sau khi thực thi, đầu ra sẽ giống như sau:

Tải xuống Tệp dự án Selenium cho Demo trong Hướng dẫn này

Khung kết hợp

Khung kết hợp trong Selenium là một khái niệm mà chúng tôi đang sử dụng lợi thế của cả Khung hướng từ khóa cũng như Khung hướng dữ liệu. Đây là một khung công tác dễ sử dụng cho phép người kiểm thử thủ công tạo các trường hợp thử nghiệm bằng cách chỉ cần xem các từ khóa, dữ liệu thử nghiệm và kho lưu trữ đối tượng mà không cần viết mã trong khung công tác.

Ở đây đối với từ khóa, chúng tôi sẽ sử dụng tệp Excel để duy trì các trường hợp thử nghiệm và đối với dữ liệu thử nghiệm, chúng tôi có thể sử dụng dữ liệu, nhà cung cấp khung Testng.

Ở đây trong khuôn khổ kết hợp của chúng tôi, chúng tôi không cần thay đổi bất kỳ điều gì trong khuôn khổ điều khiển từ khóa, ở đây chúng tôi chỉ cần thay thế tệp ExecuteTest.java bằng tệp HybridExecuteTest.java.

Tệp HybridExecuteTest này có tất cả mã cho từ khóa được điều khiển với khái niệm nhà cung cấp dữ liệu.

Biểu diễn hình ảnh hoàn chỉnh của khung kết hợp sẽ trông như thế nào

HybridExecuteTest.java

gói testCases;nhập java.io.IOException;nhập java.util.Properties;nhập hoạt động.ReadObject;nhập hoạt động.UIOperation;nhập org.apache.poi.ss.usermodel.Row;nhập org.apache.poi.ss.usermodel.Sheet;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.firefox.FirefoxDriver;nhập org.testng.annotations.DataProvider;nhập org.testng.annotations.Test;nhập excelExportAndFileIO.ReadGuru99ExcelFile;public class HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) ném Exception {// VIỆC CẦN LÀM Sơ khai phương thức được tạo tự độngif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = new FirefoxDriver ();}Đối tượng ReadObject = new ReadObject ();Thuộc tính allObjects = object.getObjectRepository ();Hoạt động UIOperation = UIOperation mới (webdriver);// Gọi hàm thực hiện để thực hiện thao tác trên UIoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () ném IOException {Đối tượng [] [] object = null;Tập tin ReadGuru99ExcelFile = new ReadGuru99ExcelFile ();// Đọc trang từ khóaTrang tính guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Tìm số hàng trong tệp excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Tóm lược:

  • Chúng ta có thể tạo ba loại khung kiểm tra bằng cách sử dụng Selenium WebDriver.
  • Đây là khung thử nghiệm Theo hướng dữ liệu, Theo hướng từ khóa và Kết hợp.
  • Chúng tôi có thể đạt được khung theo hướng dữ liệu bằng cách sử dụng nhà cung cấp dữ liệu của TestNG.
  • Trong khung điều khiển từ khóa, từ khóa được viết trong một số tệp bên ngoài như tệp excel và mã java sẽ gọi tệp này và thực thi các trường hợp thử nghiệm.
  • Khung kết hợp là sự kết hợp của khung theo hướng từ khóa và theo hướng dữ liệu.

Tải xuống Tệp dự án Selenium cho Demo trong Hướng dẫn này