Bắt đầu kiểm thử tự động với Selenium trong Python

Để bắt đầu kiểm thử tự động bằng Selenium, bạn cần thực hiện theo các bước sau:

1. Thiết lập môi trường

Cài đặt thư viện Selenium

Sử dụng lệnh sau để cài đặt qua pip:

pip install selenium

Tải và cấu hình trình điều khiển trình duyệt

Selenium hỗ trợ nhiều trình duyệt như Chrome, Firefox, Edge... Bạn cần tải trình điều khiển (WebDriver) tương ứng từ trang chủ của từng trình duyệt và đảm bảo phiên bản phù hợp với trình duyệt đang dùng.

Chuẩn bị môi trường phát triển

Bạn có thể dùng bất kỳ IDE (như PyCharm, VS Code) nào hỗ trợ Python. Đảm bảo Python đã được cài đặt và môi trường ảo (nếu có) đã kích hoạt.

2. Viết kịch bản kiểm thử

Khởi tạo trình duyệt

Ví dụ khởi tạo trình duyệt Chrome:

from selenium import webdriver

browser = webdriver.Chrome()

Mở trang web

browser.get("https://example.com")

Định vị phần tử trên trang

Selenium hỗ trợ nhiều phương pháp định vị:

# Theo ID
elem = browser.find_element("id", "login-btn")

# Theo class
elem = browser.find_element("class name", "form-control")

# Theo thẻ HTML
elem = browser.find_element("tag name", "input")

# Theo XPath
elem = browser.find_element("xpath", "//button[@type='submit']")

# Theo CSS selector
elem = browser.find_element("css selector", ".btn-primary")

Lưu ý: Các phương thức find_element_by_* đã bị loại bỏ từ Selenium 4+. Nên dùng cú pháp find_element(By.*, value) hoặc dạng rút gọn như trên.

Tương tác với phần tử

# Nhấp chuột
elem.click()

# Nhập văn bản
elem.send_keys("test@example.com")

# Lấy nội dung văn bản
content = elem.text

# Lấy thuộc tính
attr_value = elem.get_attribute("value")

# Kiểm tra hiển thị
visible = elem.is_displayed()

Thực hiện chuỗi hành động

from selenium.webdriver.common.action_chains import ActionChains

actions = ActionChains(browser)
actions.move_to_element(elem).click().perform()

Xử lý cảnh báo và iframe

# Xử lý alert
alert = browser.switch_to.alert
alert.accept()        # OK
alert.dismiss()       # Cancel

# Chuyển vào iframe
browser.switch_to.frame("main-frame")
# Quay lại nội dung chính
browser.switch_to.default_content()

Xác minh kết quả

# Kiểm tra tiêu đề
assert "Example Domain" in browser.title

# Kiểm tra URL
assert "example.com" in browser.current_url

# Kiểm tra sự tồn tại
try:
    browser.find_element("id", "footer")
except:
    assert False, "Phần tử không tồn tại"

Chờ đợi phần tử

Sử dụng chờ ngầm định (implicit wait) hoặc chờ tường minh (explicit wait):

# Implicit wait – áp dụng toàn cục
browser.implicitly_wait(10)

# Explicit wait – chờ điều kiện cụ thể
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(browser, 10)
login_btn = wait.until(EC.element_to_be_clickable((By.ID, "login-btn")))

Chụp màn hình và ghi log

# Lưu ảnh chụp màn hình
browser.save_screenshot("result.png")

# Ghi log đơn giản
import logging
logging.basicConfig(level=logging.INFO)
logging.info("Đã mở trang thành công")

3. Thực thi và dọn dẹp

Chạy kịch bản

Chạy file Python chứa mã kiểm thử trong terminal hoặc IDE.

Giải phóng tài nguyên

# Xóa cookie nếu cần
browser.delete_all_cookies()

# Đóng trình duyệt hoàn toàn
browser.quit()

Thẻ: selenium python automation-testing webdriver web-scraping

Đăng vào ngày 21 tháng 6 lúc 07:13