Selenium với Cucumber (Khung BDD)
Trong hướng dẫn này, bạn sẽ học cách tích hợp Cucumber với Selenium Webdriver.
Là gì Cucumber?
Cucumber là một phương pháp thử nghiệm hỗ trợ Phát triển theo hướng hành vi (BDD). Nó giải thích hành vi của ứng dụng bằng văn bản tiếng Anh đơn giản sử dụng ngôn ngữ Gherkin.
Tìm hiểu thêm tại – https://www.guru99.com/cucumber-tutorials.html
Là gì Selenium?
Selenium là một công cụ tự động hóa cho Thử nghiệm chức năng của ứng dụng dựa trên web. Selenium hỗ trợ các ngôn ngữ khác nhau như java, ruby, python C#, v.v.
Tìm hiểu thêm tại – https://www.guru99.com/selenium-tutorial.html
Tại sao sử dụng Cucumber với Selenium?
Cucumber và Selenium là hai công nghệ phổ biến.
Hầu hết các tổ chức đều sử dụng Selenium để kiểm tra chức năng. Các tổ chức này đang sử dụng Selenium, muốn hòa nhập Selenium với Cucumber as Cucumber làm cho nó dễ đọc và dễ hiểu luồng ứng dụng.
Cucumber công cụ này dựa trên khuôn khổ Phát triển theo định hướng hành vi đóng vai trò là cầu nối giữa những người sau đây:
- Kỹ sư phần mềm và nhà phân tích kinh doanh.
- Kiểm thử thủ công và Kiểm thử tự động.
- Người kiểm tra và nhà phát triển thủ công.
Cucumber Khung BDD cũng mang lại lợi ích cho khách hàng khi hiểu được mã ứng dụng vì nó sử dụng ngôn ngữ Gherkin ở dạng Văn bản thuần túy. Bất cứ ai trong tổ chức đều có thể hiểu được hành vi của phần mềm. Cú pháp của Gherkin là văn bản đơn giản, dễ đọc và dễ hiểu.
Điều kiện tiên quyết để sử dụng Cucumber với Selenium
Trước khi chúng ta bắt đầu Cucumber Selenium tích hợp, chúng ta cần những mục sau:
- Selenium tập tin jar:
- Selenium-máy chủ độc lập
Có thể tải xuống tại http://www.seleniumhq.org/download/
Tệp jar cho Cucumber :
- Cucumber-cốt lõi
- Cucumber-html
- bảo hiểm mã cobertura
- Cucumber-java
- Cucumber-junit
- Cucumber-jvm-dep
- Cucumber-Báo cáo
- Hamcrest-lõi
- Gherkin
- Junit
Có thể tải xuống tại https://mvnrepository.com/search?q=Cucumber
Bạn cần tìm kiếm các tập tin và tải từng tập tin một.
Ví dụ: chúng tôi sẽ hướng dẫn bạn tải xuống một trong các tệp jar, tức là “Cucumber-cốt lõi.”
Nhấp vào liên kết tải xuống ở trên. Nó chuyển hướng đến trang web dưới đây. Bây giờ hãy tìm kiếm lọ cụ thể, tức là 'Cucumber Core' như ảnh chụp màn hình bên dưới:
Trong trang tiếp theo, Nhấp vào phiên bản 1.2.2,
Trong màn hình tiếp theo, nhấp vào tải xuống để lấy 'Cucumber Tệp jar lõi'.
Chú thích: Để bạn dễ dàng sử dụng, chúng tôi đã gói các tệp jar cần thiết để tải xuống từ Maven vào đây. Theo thời gian, những chiếc lọ này có thể được cập nhật và trở nên không tương thích. Bạn được yêu cầu tải chúng xuống bằng phương pháp minh họa ở trên.
Kiểm tra tự động hóa bằng cách sử dụng Cucumber với Selenium.
Hãy cùng nghiên cứu các bước sử dụng Cucumber với selenium từng bước một. Ở đây chúng tôi sẽ đề cập đến 3 tình huống:
- Tình huống 1: In văn bản trong bảng điều khiển.
- Tình huống 2: Nhập thông tin xác thực đăng nhập và đặt lại giá trị.
- Tình huống 3: Nhập Thông tin đăng nhập trên Guru99 và đặt lại giá trị. Làm điều này cho 3 bộ dữ liệu.
Tình huống 1: In văn bản trong bảng điều khiển.
Trong trường hợp này, chúng tôi chỉ in văn bản trong bảng điều khiển bằng cách sử dụng Cucumber.
Bước 1) Tạo dự án trong Eclipse.
Tạo Java dự án mang tên “CucumberVớiSelenium” như thể hiện trong ảnh chụp màn hình bên dưới.
Bước 2) Thêm tệp Jar vào dự án.
Nhấp chuột phải vào Dự án > Chọn Thuộc tính > Đi tới Java Xây dựng đường dẫn. Thêm tất cả các thư viện đã tải xuống trước đó.
Bước 3) Tạo tập tin tính năng
Để tạo tệp tính năng, trước tiên hãy tạo thư mục tính năng như hiển thị bên dưới ảnh chụp màn hình.
Bây giờ Nhập tên thư mục 'Tính năng' và nhấp vào nút 'Hoàn tất'.
Bây giờ, tạo tệp tính năng trong thư mục 'Tính năng' với tên “MyTest.feature” – Quá trình tương tự như tạo thư mục
Lưu ý: Bạn có thể cần phải cài đặt Cucumber Eclipse Plugin để làm việc này. Goto — Trợ giúp->Cài đặt phần mềm mới->sao chép dán liên kết http://cucumber.github.io/cucumber-eclipse/update-site/ và cài đặt
Bước 4) Viết kịch bản.
Các dòng bên dưới được viết trong tệp 'MyTest.feature' bằng ngôn ngữ Gherkin như hiển thị bên dưới:
Feature: Reset functionality on login page of Application Scenario: Verification of Reset button Given Open the Firefox and launch the application When Enter the Username and Password Then Reset the credential
Giải thích mã
Dòng 1) Trong dòng này chúng tôi viết chức năng kinh doanh.
Dòng 2) Trong dòng này chúng tôi viết một kịch bản để kiểm tra.
Dòng 3) Trong dòng này, chúng tôi xác định điều kiện tiên quyết.
Dòng 4) Trong dòng này, chúng tôi xác định hành động chúng tôi cần thực hiện.
Dòng 4) Trong dòng này, chúng tôi xác định kết quả hoặc kết quả mong đợi.
Bước 5) Viết tập lệnh selenium testrunner cho Selenium Cucumber thiết kế khung
Ở đây chúng tôi tạo gói 'TestRunner' và sau đó là tệp lớp 'Runner.java' bên dưới gói đó.
package TestRunner; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features="Features",glue={"StepDefinition"}) public class Runner { }
Ở trên Cucumber Java mã ví dụ, chúng tôi chạy thử nghiệm dưa chuột bằng cách sử dụng các chú thích sau:
@RunWith() chú thích cho biết về lớp người chạy thử nghiệm để bắt đầu thực hiện các thử nghiệm của chúng tôi.
@CcmberOptions() chú thích được sử dụng để đặt một số thuộc tính cho thử nghiệm dưa chuột của chúng tôi như tệp tính năng, định nghĩa bước, v.v.
Ảnh chụp màn hình của tệp TestRunner.
Bước 6) Tạo tập lệnh Định nghĩa bước.
Bây giờ ở đây chúng ta tạo gói 'StepDefinition' và sau đó là tệp tập lệnh 'Steps.java' bên dưới nó. Ở đây chúng ta thực sự viết một tập lệnh selenium để thực hiện thử nghiệm bên dưới Cucumber phương pháp.
package StepDefinition; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class Steps { @Given("^Open the Firefox and launch the application$") public void open_the_Firefox_and_launch_the_application() throws Throwable { System.out.println("This Step open the Firefox and launch the application."); } @When("^Enter the Username and Password$") public void enter_the_Username_and_Password() throws Throwable { System.out.println("This step enter the Username and Password on the login page."); } @Then("^Reset the credential$") public void Reset_the_credential() throws Throwable { System.out.println("This step click on the Reset button."); } }
Trong đoạn mã trên, lớp được tạo với tên 'Các bước'. Cucumber chú thích được sử dụng để ánh xạ với tệp tính năng. Mỗi phương thức chú thích được xác định:
@Được cho chú thích xác định phương pháp để mở firefox và khởi chạy ứng dụng
@Khi chú thích xác định phương thức để nhập tên người dùng và mật khẩu
@Sau đó chú thích xác định phương thức để đặt lại thông tin xác thực
Theo mỗi phương pháp, chúng tôi chỉ in một tin nhắn.
Dưới đây là ảnh chụp màn hình của tập lệnh và cây dự án 'Steps.java', nó trông như thế nào.
Lưu ý: Định nghĩa bước không gì khác hơn là các bước bạn muốn thực hiện theo phương pháp dưa chuột này.
Bước 7) Thực thi tập lệnh.
Người dùng có thể thực thi tập lệnh này từ tập lệnh Chạy thử, tức là 'Runner.java' như trong ảnh chụp màn hình bên dưới.
Bước 8) Phân tích đầu ra.
Khi thực thi tập lệnh 'Runner.java', nó sẽ hiển thị văn bản trên bảng điều khiển. Đó là cùng một văn bản được xác định trong tập lệnh 'Steps.java'.
Tình huống 2: Nhập thông tin xác thực đăng nhập và đặt lại giá trị.
Ở đây chúng ta sẽ chỉ nhập Thông tin xác thực trên trang đăng nhập demo Guru99 và đặt lại giá trị
Đối với Kịch bản 2, chúng ta chỉ cần cập nhật tập lệnh 'Steps.java'. Ở đây, chúng ta thực sự viết tập lệnh selenium như được hiển thị bên dưới các bước. Đầu tiên, chúng ta cần thêm Selenium jar vào dự án này.
Bước 1) Ở đây chúng tôi cập nhật tập lệnh 'Steps.java' như trong mã và ảnh chụp màn hình bên dưới.
package StepDefinition; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class Steps { WebDriver driver; @Given("^Open the Firefox and launch the application$") public void open_the_Firefox_and_launch_the_application() throws Throwable { System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe"); driver= new FirefoxDriver(); driver.manage().window().maximize(); driver.get("http://demo.guru99.com/v4"); } @When("^Enter the Username and Password$") public void enter_the_Username_and_Password() throws Throwable { driver.findElement(By.name("uid")).sendKeys("username12"); driver.findElement(By.name("password")).sendKeys("password12"); } @Then("^Reset the credential$") public void Reset_the_credential() throws Throwable { driver.findElement(By.name("btnReset")).click(); } }
Ảnh chụp màn hình của tập lệnh selen ở trên.
Bước 2) Thực thi kịch bản.
Sau khi cập nhật, chúng tôi chạy Runner.java.
Bước 3) Phân tích đầu ra.
Trong kết quả đầu ra, bạn có thể thấy những thông tin sau:
- Đã khởi chạy trình duyệt.
- Trang web demo ngân hàng Guru99 được mở.
- Tên người dùng và mật khẩu được đặt trên trang đăng nhập.
- Đặt lại các giá trị.
Tình huống 3: Nhập Thông tin đăng nhập trên Guru99 và đặt lại giá trị. Làm điều này cho 3 bộ dữ liệu.
Ở đây chúng ta cần cập nhật cả tệp 'Step.java' và tệp tính năng.
Bước 1) Cập nhật tệp tính năng như dưới đây:
Here we update the feature file with 'Scenario Outline' and 'examples' syntax. Feature: Reset functionality on login page of Application Scenario Outline: Verification of reset button with numbers of credential Given Open the Firefox and launch the application When Enter the Username <username>and Password <password> Then Reset the credential Examples: |username |password | |User1 |password1 | |User2 |password2 | |User3 |password3 | // In this line we define the set of data.
Bước 2) Bây giờ hãy cập nhật tập lệnh Step.java.
Ở đây chúng tôi cập nhật các phương thức để truyền tham số, tập lệnh được cập nhật được hiển thị bên dưới:
package StepDefinition; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class Steps { WebDriver driver; @Given("^Open the Firefox and launch the application$") public void open_the_Firefox_and_launch_the_application() throws Throwable { System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe"); driver= new FirefoxDriver(); driver.manage().window().maximize(); driver.get("www.demo.guru99.com/v4"); } @When("^Enter the Username \"(.*)\" and Password \"(.*)\"$") public void enter_the_Username_and_Password(String username,String password) throws Throwable { driver.findElement(By.name("uid")).sendKeys(username); driver.findElement(By.name("password")).sendKeys(password); } @Then("^Reset the credential$") public void Reset_the_credential() throws Throwable { driver.findElement(By.name("btnReset")).click(); } }
Bước 3) Bây giờ thực thi tập lệnh đã cập nhật.
Màn hình bên dưới hiển thị việc thực thi thành công tập lệnh và thời gian thực hiện của mỗi bộ dữ liệu.
Bước 4) Phân tích đầu ra.
Trong kết quả đầu ra, bạn có thể thấy những thông tin sau:
Đầu ra bên dưới được lặp lại cho số lượng tập dữ liệu, tức là 3 bộ.
- Đã khởi chạy trình duyệt.
- Trang web demo ngân hàng Guru99 được mở.
- Tên người dùng và mật khẩu được đặt trên trang đăng nhập.
- Đặt lại các giá trị.
Kết luận
Cucumber là một công cụ BDD rất phổ biến. Nó dễ đọc và có thể được hiểu bởi tất cả các bên liên quan bao gồm cả người kỹ thuật và người không chuyên về kỹ thuật.
Cucumber có thể được tích hợp với Selenium sử dụng 3 bước sau
- Tạo tệp tính năng trong đó xác định từng bước tính năng và kịch bản bằng ngôn ngữ Gherkin.
- Tạo tập tin Testrunner. Trong tập tin này, chúng tôi đã tích hợp Cucumber với khung BDD trong Selenium. Chúng tôi thực thi kịch bản này.
- Định nghĩa Bước tạo, tập lệnh selen thực tế được xác định trong gói này.