Kiến thức cơ bản về Automation Testing bằng Selenium

4 min read

Selenium Logo

Khám phá nền tảng Automation Testing với Selenium WebDriver: từ khái niệm, cách định vị WebElement, sử dụng XPath, thao tác với bảng (Table), iFrame, đến xử lý Alert.

1. Selenium WebDriver

Selenium WebDriver là một API mã nguồn mở giúp tự động hóa kiểm thử ứng dụng web. Nó cho phép tương tác trực tiếp với trình duyệt giống như người dùng thật.
Đặc điểm nổi bật:

  • Hỗ trợ đa trình duyệt: Chrome, Firefox, Safari, Edge.
  • Cho phép kiểm thử trên nhiều trình duyệt (cross-browser testing).
  • Tích hợp được với framework như TestNG, JUnit, Cucumber.

Xem thêm: https://www.guru99.com/introduction-webdriver-comparison-selenium-rc.html

2. Web Element

Các phần tử giao diện trên web như textbox, button, checkbox, dropdown, radio button… được gọi là WebElement. Các phần tử này có thể được xác định bằng các thuộc tính như id, classname, name hoặc XPath.

Cách định vị phần tử (Locator)
Selenium cung cấp nhiều cách định vị phần tử:

Loại locatorMô tảVí dụ
IDĐịnh vị theo IDdriver.findElement(By.id(“username”))
NameĐịnh vị theo namedriver.findElement(By.name(“email”))
ClassNameĐịnh vị theo classdriver.findElement(By.className(“btn-login”))
XPathĐịnh vị bằng XPathdriver.findElement(By.xpath(“//input[@type=’text’]”))
CSS SelectorĐịnh vị nhanh, phổ biếndriver.findElement(By.cssSelector(“.btn-primary”))
LinkTextĐịnh vị theo văn bản linkdriver.findElement(By.linkText(“Forgot Password”))

Xem thêm: https://www.guru99.com/locators-in-sehtmllenium.

3. XPath

XPath là ngôn ngữ truy vấn dùng để xác định vị trí phần tử trong cây DOM HTML.
Khi các thuộc tính ID, name không ổn định, XPath là công cụ linh hoạt để xác định phần tử chính xác.
Cú pháp:
driver.findElement(By.xpath("//tag[@attribute='value']"));

Các loại XPath:

  • Xpath tuyệt đối (Absolute Xpath): Bắt đầu bằng node gốc hoặc dấu gạch chéo đơn “/”, cho phép xác định một đường dẫn tuyệt đối đến đối tượng UI.
    • Ví dụ: /html/body/div[2]/div[1]/div/h4[1]/b
  • Xpath tương đối (Relative Xpath): Bắt đầu bằng 2 dấu gạch chéo “//”, tìm phần tử bất kỳ đâu trong tài liệu.
    • Ví dụ: //div//input
  • Xpath hỗn hợp (Mixture Xpath): Kết hợp giữa tuyệt đối và tương đối
    • Ví dụ: html//table/tbody/tr/th

XPath động (Dynamic XPath)
Khi giá trị phần tử thay đổi theo runtime, có thể dùng biểu thức XPath để xử lý:

HàmMô TảCú pháp
contains()Tìm phần tử có thuộc tính hoặc nội dung chứa một phần giá trị//tag[contains(@attribute, ‘partial_value’)]
starts-with()Tìm phần tử bắt đầu bằng một chuỗ cụ thể//tag[starts-with(@attribute, ‘start’)]
text()Tìm phần tử theo nội dung văn bản chính xác//tagname[text()=’ExactText’]
orChỉ cần một trong hai điều kiện đúng//tag[@attr1=’value1′ or @attr2=’value2′]
andCả hai điều kiện đúng//tag[@attr1=’value1′ and @attr2=’value2′]

Xem thêm: https://www.guru99.com/xpath-selenium.html

4. Web Table

Web Table là một WebElement dùng để hiển thị dữ liệu dạng bảng (HTML <table>). Có thể là:

  • Bảng tĩnh: nội dung cố định.
  • Bảng động: dữ liệu thay đổi theo thời gian (vd: danh sách user).

Truy xuất phần tử trong bảng:
Bước 1: Xác định phần tử cha là <table> Bắt đầu XPath với //table

Bước 2: Thêm phần tử con

Ví dụ: //table/tbody

Bước 3: Sử dụng chỉ số (predicate) để chọn dòng cụ thể

Ví dụ: //table/tbody/tr[2] –> chọn dòng thứ 2

Bước 4: Truy cập ô cụ thể bằng cách thêm

Ví dụ: //table/tbody/tr[2]/td[2] –> chọn ô thứ 2 của dòng thứ 2

Trường hợp bảng lồng bảng: Áp dụng tương tự như trên, cần viết XPath chính xác theo thứ tự cha – con

Xem thêm WebTable: https://www.guru99.com/selenium-webtable.html
Xử lý table dynamic: https://www.guru99.com/handling-dynamic-selenium-webdriver.html

5. iFrame

iFrame (Inline Frame) là một trang HTML được nhúng bên trong một trang web khác. Selenium phải chuyển “vào đúng frame” để thao tác được phần tử bên trong

Cách chuyển vào iFrame

CáchVí dụ
Theo chỉ số (index)driver.switchTo().frame(0);
Theo tên hoặc IDdriver.switchTo().frame("iframe1");
Theo WebElementWebElement frame = driver.findElement(By.tagName("iframe"));
driver.switchTo().frame(frame);

Thoát khỏi iFrame:
driver.switchTo().parentFrame(); // Quay về frame cha
driver.switchTo().defaultContent(); // Quay về trang chính (root frame)

Khi có nhiều iFrame không có ID/Name:

  • Duyệt qua từng iframe bằng chỉ số.
  • Mỗi lần chuyển vào iframe → kiểm tra phần tử mong muốn có tồn tại không.
  • Nếu có → tiếp tục thao tác trong iframe đó.

List frames = driver.findElements(By.tagName("iframe"));
for (int i = 0; i < frames.size(); i++) {
driver.switchTo().frame(i);
// kiểm tra phần tử mong muốn
}

Xem thêm: https://www.guru99.com/handling-iframes-selenium.html

6. Alert

Alert là hộp thoại JavaScript bật lên để thông báo hoặc yêu cầu xác nhận.
Selenium cung cấp lớp Alert để xử lý 3 loại alert:

LoạiMô tả Phương thức
Simple AlertThông báo đơn giảndriver.switchTo().alert().accept();
Confirmation AlertCó Ok/Cancelalert.dismiss(); hoặc alert.accept();
Prompt AlertYêu cầu nhập dữ liệualert.sendKeys("text"); alert.accept();

Ví dụ
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.accept();

📌 Lưu ý: Selenium chỉ xử lý alert thật (JS), không thao tác được “fake popup” là phần tử HTML – khi đó cần dùng WebElement locator.

Xem thêm: https://www.guru99.com/alert-popup-handling-selenium.html

Cảm ơn mọi người đã đọc bài viết của em ạ 🫶 !

Selenium – Action API – Keyboard: https://ant.ncc.plus/selenium-action-api-keyboard/

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *