Tìm hiểu Selenium Form WebElement: TextBox, Button, sendkeys (), click ()

Forms là yếu tố cơ bản của web để nhận thông tin từ khách truy cập trang web. Forms web có các phần tử GUI khác nhau như Text boxes, Password fields, Checkboxes, Radio buttons, dropdowns, file inputs, v.v.

Chúng ta sẽ xem cách truy cập các phần tử Forms khác nhau này bằng Selenium Web Driver với Java. Selenium đóng gói mọi phần tử Forms như một đối tượng của WebElement. Nó cung cấp API để tìm các phần tử và thực hiện hành động trên chúng như nhập văn bản vào hộp văn bản, nhấp vào các nút, v.v. Chúng ta sẽ thấy các phương thức có sẵn để truy cập từng phần tử Forms.

Trong hướng dẫn này, chúng ta sẽ xem cách xác định các phần tử Forms sau

Giới thiệu về WebElement, findElement (), findElements ()

Selenium Web Driver đóng gói một phần tử Forms đơn giản như một đối tượng của WebElement.

Có nhiều kỹ thuật khác nhau code WebDriver xác định các phần tử Forms dựa trên các thuộc tính khác nhau của các phần tử Web như ID, name, class, XPath, name thẻ, Bộ chọn CSS, Văn bản liên kết, v.v.

Trình điều khiển Web cung cấp hai phương thức WebElement sau đây để tìm các phần tử.

  • findElement () – tìm một phần tử web duy nhất và trả về dưới dạng một đối tượng WebElement Selenium.
  • findElements () – trả về danh sách các đối tượng WebElement phù hợp với tiêu chí của Locators .

Hãy xem các đoạn code để lấy một phần tử duy nhất – Trường Văn bản trong một trang web dưới dạng đối tượng của WebElement bằng cách sử dụng phương thức findElement (). Chúng tôi sẽ đề cập đến phương thức findElements () để tìm nhiều phần tử trong các hướng dẫn tiếp theo.

Bước 1: Chúng ta cần nhập gói này để tạo các đối tượng của Phần tử Web

Bước 2: Chúng ta cần gọi phương thức findElement () có sẵn trên class WebDriver và lấy một đối tượng của WebElement.

Tham khảo bên dưới để xem nó được thực hiện như thế nào.

Hộp đầu vào

Các hộp nhập đề cập đến một trong hai loại sau:

  1. Trường Văn bản – Hộp văn bản đầu vào Selenium chấp nhận các giá trị đã nhập và hiển thị chúng như hiện có.
  2. Trường codet khẩu – hộp văn bản chấp nhận các giá trị đã nhập nhưng che dấu chúng dưới dạng một chuỗi các ký tự đặc biệt (thường là dấu chấm và dấu hoa thị) để tránh các giá trị nhạy cảm được hiển thị.

Locators 

Phương thức findElement () nhận một tham số là Locators  cho phần tử. Các trình định vị khác nhau như By.id (), By.name (), By.xpath (), By.CSSSelector (), v.v. định vị các phần tử trong trang bằng cách sử dụng các thuộc tính của chúng như id, name hoặc đường dẫn, Vân vân.

Bạn có thể sử dụng các plugin như Fire path để được trợ giúp lấy id, xpath, v.v. của các phần tử.

Sử dụng trang web codeu http://demo.guru99.com/test/login.html được cung cấp bên dưới là code để định vị trường văn bản “Địa chỉ ecodeil” bằng cách sử dụng Locators  id và trường “codet khẩu” bằng Locators  name.

  1. Trường văn bản ecodeil được đặt bởi Id
  2. Trường codet khẩu được đặt theo name

lính gác trong Selenium

sendkeys () trong Selenium là một phương thức được sử dụng để nhập nội dung có thể chỉnh sửa vào trường văn bản và codet khẩu trong quá trình thực thi thử nghiệm. Các trường này được xác định bằng cách sử dụng các Locators  như name, class, id, v.v. Đây là một phương thức có sẵn trên phần tử web. Không giống như phương thức type, phương thức sendkeys () không thay thế văn bản hiện có trong bất kỳ hộp văn bản nào.

Nhập giá trị vào hộp nhập liệu

Để nhập văn bản vào Trường Văn bản và Trường codet khẩu, sendKeys () là phương thức có sẵn trên WebElement trong Selenium.

Sử dụng ví dụ tương tự của trang web http://demo.guru99.com/test/login.html , đây là cách chúng tôi tìm trường Văn bản và trường codet khẩu và nhập văn bản vào Selenium.

  1. Tìm trường Văn bản “Địa chỉ Ecodeil” bằng công cụ định vị id.
  2. Tìm trường “codet khẩu” bằng công cụ định vị name
  3. Nhập văn bản vào “Địa chỉ Ecodeil” bằng phương pháp Selenium sendkeys.
  4. Nhập codet khẩu vào trường “codet khẩu” bằng phương thức sendKeys ().

Xóa giá trị trong hộp đầu vào

Phương thức clear () được sử dụng để xóa văn bản trong hộp nhập liệu. Phương thức này không cần tham số . Đoạn code bên dưới sẽ xóa văn bản khỏi trường Ecodeil hoặc codet khẩu

nút

Có thể truy cập nút bấm Selenium bằng phương thức click ().

Trong ví dụ trên

  1. Tìm nút để đăng nhập
  2. Nhấp vào nút “Đăng nhập” trong trang đăng nhập của trang web để đăng nhập vào trang web.

Gửi các nút

Các nút gửi được sử dụng để gửi toàn bộ Forms đến codey chủ. Chúng ta có thể sử dụng phương thức click () trên phần tử web như một nút bình thường như chúng ta đã làm ở trên hoặc sử dụng phương thức submit () trên bất kỳ phần tử web nào trong Forms hoặc trên chính nút gửi.

Khi submit () được sử dụng, WebDriver sẽ tra cứu DOM để biết phần tử thuộc về Forms nào và sau đó kích hoạt chức năng submit của nó.

Hoàn thành code

Đây là code làm việc hoàn chỉnh

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.*;

public class Form {

    public static void codein(String[] args) {

     // declaration and instantiation of objects/variables

        System.setProperty(“webdriver.chrome.driver”,”G:\\chromedriver.exe”);

        WebDriver driver = new ChromeDriver();

        String baseUrl = “http://demo.guru99.com/test/login.html”;

        driver.get(baseUrl);

        // Get the WebElement corresponding to the Ecodeil Address(TextField)

        WebElement ecodeil = driver.findElement(By.id(“ecodeil”));

        // Get the WebElement corresponding to the Password Field

        WebElement password = driver.findElement(By.name(“passwd”));

        ecodeil.sendKeys(“abcd@gcodeil.com”);

        password.sendKeys(“abcdefghlkjl”);

        System.out.println(“Text Field Set”);

        // Deleting values in the text box

        ecodeil.clear();

        password.clear();

        System.out.println(“Text Field Cleared”);

        // Find the submit button

        WebElement login = driver.findElement(By.id(“SubmitLogin”));

        // Using click method to submit form

        ecodeil.sendKeys(“abcd@gcodeil.com”);

        password.sendKeys(“abcdefghlkjl”);

        login.click();

        System.out.println(“Login Done with Click”);

        //using submit method to submit the form. Submit used on password field

        driver.get(baseUrl);

        driver.findElement(By.id(“ecodeil”)).sendKeys(“abcd@gcodeil.com”);

        driver.findElement(By.name(“passwd”)).sendKeys(“abcdefghlkjl”);

        driver.findElement(By.id(“SubmitLogin”)).submit();

        System.out.println(“Login Done with Submit”);

//driver.close();

    }

}

Xử lý sự cố

Nếu bạn gặp NoSuchElementException () trong khi tìm phần tử, điều đó có nghĩa là phần tử không được tìm thấy trong trang tại thời điểm trình điều khiển Web truy cập trang.

  1. Kiểm tra lại Locators  của bạn bằng cách sử dụng Firepath hoặc Kiểm tra phần tử trong Chrome.
  2. Kiểm tra xem giá trị bạn đã sử dụng trong code có khác với giá trị cho phần tử trong Firepath bây giờ hay không.
  3. Một số thuộc tính là động đối với một số phần tử. Trong trường hợp, bạn thấy rằng giá trị khác và đang thay đổi động, hãy xem xét sử dụng By.xpath () hoặc By.cssSelector () là những cách đáng tin cậy hơn nhưng phức tạp hơn.
  4. Đôi khi, nó cũng có thể là vấn đề chờ đợi, tức là trình điều khiển Web đã thực thi code của bạn ngay cả trước khi trang được tải hoàn toàn, v.v.
  5. Thêm một lượt đợi trước findElement () bằng cách sử dụng các lượt đợi ngầm hoặc rõ ràng.

Tóm lược

  • Bảng dưới đây tóm tắt các lệnh để truy cập từng loại phần tử được thảo luận ở trên
ElementComcodendDescription
Input BoxsendKeys()được sử dụng để nhập giá trị vào hộp văn bản
clear()được sử dụng để xóa các hộp văn bản có giá trị hiện tại của nó
Linksclick()được sử dụng để nhấp vào liên kết và đợi quá trình tải trang hoàn tất trước khi thực hiện lệnh tiếp theo.
Submit Buttonsubmit()
  • WebDriver cho phép lựa chọn nhiều hơn một tùy chọn trong nhiều phần tử CHỌN.
  • Bạn có thể sử dụng phương thức submit () trên bất kỳ phần tử nào trong Forms. WebDriver sẽ tự động kích hoạt chức năng gửi của Forms code phần tử đó thuộc về.
Back to top button