0

Cách xác định đối tượng UI bằng Selenium Webdriver

Trong automations testing, khi thực hiện kiểm thử tự động đối với cả nền tảng mobile và web thì việc quan trọng là chúng ta phải làm cách nào đó để các công cụ kiểm thử tự động có thể nhận biết và phân biệt được các đối tượng UI trên phần mềm mà ta kiểm tra. Vậy khi sử dụng Selenium webdriver để kiểm thử tự động thì Selenium đã hỗ trợ chúng ta một số phương pháp để xác định UI dựa trên các thuộc tính của đối tượng UI.

Selenium cung cấp cho ta 2 command để có thể xác định được các đối tượng UI ở trên view:

  • findEleiment(): Câu lệnh này giúp chúng ta xác định được các phần tử UI đơn ở trên web view. Nó sẽ trả về phần tử UI đầu tiên khớp với điều kiện tìm kiếm của câu lệnh. Nếu không xác định được phần tử UI nào khớp với điều kiện thì sẽ quăng ra "NoSuchElementException" exception.
  • findElements(): Câu lệnh này giúp chúng ta xác định được một list các phần tử UI ở trên web view. Nó sẽ trả về một list các phần từ UI khớp với điều kiện tìm kiếm của câu lệnh. Nếu không xác định được phần tử UI nào thì nó sẽ trả về list rỗng.

Tiếp theo mình sẽ giới thiệu cách xác định được các đối tượng UI bằng 2 câu lệnh trên: 1. By ID: Thuộc tính này là sự lựa chọn đầu tiên trong việc xác định các đối tượng UI vì nó là thuộc tính đơn giản và ổn định nhất, và sẽ thường là duy nhất.

Cú pháp: driver.findElement(By.id(<element ID>));

Example:

Trường hợp ở trên thì trường “Username”id=”log”. Ta sử dụng câu lệnh sau để xác định được trường “Username”: WebElement element = driver.findElement(By.id("log"));

2. By Name: Name là thuộc tính được lựa chọn thứ hai sau ID. Tuy nhiên thì thuộc tính Name đôi khi sẽ không duy nhất. Vì vậy nó có độ ổn định sau ID.

Cú pháp: driver.findElement(By.name(<element-name>));

Example: Trường hợp ở trên thì trường “Username”name=”log”.

Ta sử dụng câu lệnh sau để xác định được trường “Username”: WebElement element = driver.findElement(By.name("log"));

3. By Class Name: Class Name được là thuộc tính được sử dụng sau cùng bởi vì nó thiếu ổn định nhất, trong một hệ thống phần mềm thì sẽ có rất nhiều phần tử có class name là trùng nhau, vì thế độ xác định chính xác một phần tử sẽ giảm xuống. Cú pháp: driver.findElement(By.className(<element-class>));

Example:

Trường hợp ở trên thì cả 2 trường “Username”“Password” đều có class=”text”. Vì vậy nếu ta sử dụng câu lệnh sau: WebElement element = driver.findElement(By.className("text"));

Kết quả sẽ trả về phần tử UI là “Username” bởi vì nó là phần tử đơn đầu tiên mapping với điều kiện tìm kiếm của câu lệnh theo thứ tự từ trên xuống dưới trong web page.

Còn nếu ta sử dụng câu lệnh sau: List<WebElement> elements = driver.findElements(By.className("text"));

Kết quả sẽ trả về cả 2 phần tử UI là “Username”“Password” dưới dạng một list elements.

4. By LinkText Or PartialLinkText: Đối với các phần từ UI dưới dạng link thì ta sử dụng cú pháp sau: Cú pháp: driver.findElement(By.linkText(<link text>)); or driver.findElement(By.partialLinkText(<link text>));

Example:

driver.findElement(By.linkText(“Register”)); Kết quả sẽ trả về phần tử UI là link “Register” Kết quả sẽ tương tự nếu bạn sử dụng câu lênh sau: driver.findElement(By.partialLinkText(“Register”));

5. By Xpath: Xpath là một cách để bạn có đi qua lại giữa các cấp trong một tài liệu XML, cung cấp cho bạn khả năng chọn các phần tử, thuộc tính cụ thể, hoặc một phần của một tài liệu XML.

Để có thể viết được một Xpath chuẩn, thì mình sẽ giới thiệu cho các bạn ở bài sau. Còn nội dung bài này chỉ dừng lại ở mức giới thiệu mà thôi.

Cú pháp: driver.findElement (By.xpath (<xpath>));

Example:

driver.findElement (By.xpath (“//input[@id=”log”]”)); Đối với xpath này sẽ trả về phần tử UI là trường “Username”

Trên đây mình đã giới thiệu các bạn các cách xác định các phần tử UI, đây là bước cơ bản và đầu tiên trong việc phát triển một dự án automations test. Bài tới mình sẽ đi sâu vào việc phân tích xác định phần tử bằng Xpath.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí