Selenium Form WebElement: TextBox, Button, sendkeys (), click ()

Mục lục:

Anonim

Biểu mẫu là yếu tố cơ bản của web để nhận thông tin từ khách truy cập trang web. Biểu mẫu web có các phần tử GUI khác nhau như Hộp văn bản, Trường mật khẩu, Hộp kiểm, nút Radio, danh sách thả xuống, đầu vào tệp, v.v.

Chúng ta sẽ xem cách truy cập các phần tử biểu mẫu khác nhau này bằng Selenium Web Driver với Java. Selenium đóng gói mọi phần tử biểu mẫu 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ử biểu mẫu.

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

  • Giới thiệu về WebElement, findElement (), findElements ()
  • Hộp đầu vào
  • Nhập giá trị vào hộp nhập liệu
  • Xóa giá trị trong hộp đầu vào
  • nút
  • Gửi các nút
  • Hoàn thành mã
  • Xử lý sự cố

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

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

Có nhiều kỹ thuật khác nhau mà WebDriver xác định các phần tử biểu mẫu dựa trên các thuộc tính khác nhau của các phần tử Web như ID, Tên, Lớp, XPath, Tên 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 đố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 bộ định vị.

Hãy xem các đoạn mã để lấy một phần tử duy nhất - Trường Văn bản trong một trang web như một đố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 lớp 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

Hộp nhập liệu đề 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 mật 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ị.

Bộ định vị

Phương thức findElement () nhận một tham số là bộ định vị 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, tên 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 mẫu http://demo.guru99.com/test/login.html được cung cấp bên dưới là mã để định vị trường văn bản "Địa chỉ email" bằng cách sử dụng bộ định vị id và trường "Mật khẩu" bằng bộ định vị tên.

  1. Trường văn bản email được đặt bởi Id
  2. Trường mật khẩu được đặt theo tên

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à mật 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 bộ định vị như tên, lớp, 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 Mật khẩu, sendKeys () là phương thức có sẵn trên WebElement trong Selenium.

Sử dụng cùng một ví dụ 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 Mật khẩu và nhập văn bản vào Selenium.

  1. Tìm trường Văn bản "Địa chỉ Email" bằng cách sử dụng công cụ định vị id.
  2. Tìm trường "Mật khẩu" bằng công cụ định vị tên
  3. Nhập văn bản vào "Địa chỉ Email" bằng phương pháp Selenium sendkeys.
  4. Nhập mật khẩu vào trường "Mật 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 mã bên dưới sẽ xóa văn bản khỏi trường Email hoặc Mật khẩu

nút

Nút bấm Selenium có thể được truy cập 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ộ biểu mẫu đến máy 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 biểu mẫu 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ề biểu mẫu nào và sau đó kích hoạt chức năng submit của nó.

Hoàn thành mã

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

nhập org.openqa.selenium.By;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.chrome.ChromeDriver;nhập org.openqa.selenium. *;biểu mẫu lớp công khai {public static void main (String [] args) {// khai báo và khởi tạo đối tượng / biếnSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Trình điều khiển WebDriver = mới ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Lấy WebElement tương ứng với Địa chỉ Email (TextField)WebElement email = driver.findElement (By.id ("email"));// Lấy WebElement tương ứng với Trường mật khẩuMật khẩu WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Địa chỉ email này đang được bảo vệ khỏi spam bots, bạn cần bật Javascript để xem nó.");password.sendKeys ("abcdefghlkjl");System.out.println ("Tập hợp Trường Văn bản");// Xóa các giá trị trong hộp văn bảnemail.clear ();password.clear ();System.out.println ("Trường Văn bản đã Xóa");// Tìm nút gửiĐăng nhập WebElement = driver.findElement (By.id ("SubmitLogin"));// Sử dụng phương thức nhấp chuột để gửi biểu mẫuemail.sendKeys (" Địa chỉ email này đang được bảo vệ khỏi spam bots, bạn cần bật Javascript để xem nó."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Hoàn tất Đăng nhập bằng Nhấp chuột"); // sử dụng phương thức gửi để gửi biểu mẫu. Gửi được sử dụng trên trường mật khẩu driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Địa chỉ email này đang được bảo vệ khỏi spam bots. Bạn cần bật Javascript để xem nó."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Hoàn tất Đăng nhập với Gửi"); //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 bộ định vị 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 mã 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 nhau 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 mã 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
Thành phần Chỉ huy Sự miêu tả
Hộp đầu vào sendKeys () được sử dụng để nhập giá trị vào hộp văn bản
thông thoáng() được sử dụng để xóa các hộp văn bản có giá trị hiện tại của nó
Liên kết nhấp chuột() đượ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.
Nút gửi Gửi đi()
  • 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 biểu mẫu. WebDriver sẽ tự động kích hoạt chức năng gửi của biểu mẫu mà phần tử đó thuộc về.