Bộ chọn CSS trong Selenium
⚡ Tóm tắt thông minh
Bộ chọn CSS trong Selenium Bộ chọn CSS là một chiến lược định vị mạnh mẽ, xác định các phần tử bằng cách sử dụng thẻ HTML, ID, lớp, thuộc tính và mẫu văn bản bên trong. Tài liệu này giải thích từng loại bộ chọn CSS với các ví dụ từng bước. Selenium SDI.

Bộ chọn CSS là gì? Selenium?
A Bộ chọn CSS trong Selenium Bộ chọn CSS là một mẫu chuỗi xác định một phần tử web thông qua sự kết hợp của thẻ HTML, id, class và thuộc tính. Bộ chọn CSS phức tạp hơn một chút so với việc định vị bằng ID hoặc tên, nhưng chúng là chiến lược phổ biến nhất đối với những người có kinh nghiệm. Selenium người dùng vì họ có thể truy cập các phần tử không có thuộc tính ID hoặc Name nào cả.
Bộ chọn CSS trong Selenium Chúng có nhiều hình thức khác nhau, nhưng hướng dẫn này tập trung vào năm kiểu mẫu phổ biến nhất được sử dụng trong Selenium SDI:
- Thẻ và ID
- Thẻ và Lớp
- Thẻ và thuộc tính
- Thẻ, lớp và thuộc tính
- Văn bản bên trong
Khi sử dụng chiến lược này trong Selenium IDE, luôn luôn thêm tiền tố Target hộp có “css=” như đã được chứng minh trong mọi ví dụ dưới đây.
Tại sao nên sử dụng bộ chọn CSS trong Selenium?
Bộ chọn CSS là chiến lược định vị được ưa chuộng đối với nhiều người. Selenium Các kỹ sư tự động hóa được đánh giá cao vì họ cân bằng giữa tốc độ, tính linh hoạt và khả năng đọc hiểu. Các ứng dụng web hiện đại thường sử dụng ID được tạo động hoặc loại bỏ hoàn toàn thuộc tính tên, khiến Bộ chọn CSS trở thành cách duy nhất đáng tin cậy để nhắm mục tiêu vào một phần tử cụ thể trên trang.
Những ưu điểm chính của việc sử dụng bộ chọn CSS bao gồm:
- Hiệu suất: Bộ chọn CSS được xử lý bởi công cụ gốc của trình duyệt, do đó chúng thực thi nhanh hơn so với các biểu thức XPath tương đương, đặc biệt là trên các trình duyệt cũ hơn như Internet Explorer.
- Thích ứng với văn hoá: Chúng kết hợp logic thẻ, lớp, thuộc tính và khớp một phần, cho phép người kiểm thử nhắm mục tiêu vào các phần tử thiếu ID ổn định.
- Khả năng đọc: Cú pháp này tương tự như cách các nhà phát triển đã viết các quy tắc CSS, giúp rút ngắn thời gian học hỏi cho cả kỹ sư kiểm thử phần mềm và nhóm phát triển giao diện người dùng.
- Độ ổn định trên nhiều trình duyệt: Các bộ chọn CSS hoạt động nhất quán trên Chrome. Firefox, Edge và Safari, giúp giảm thiểu các lỗi kiểm thử không ổn định.
Thẻ và ID – Bộ chọn CSS
Ví dụ này sử dụng ô nhập email trên trang đăng nhập Facebook. Phần tử này có ID là “e-mail“, và nó đã được truy cập trong phần “Định vị theo ID”. Giờ đây, cùng một phần tử đó được nhắm mục tiêu bằng cách sử dụng một Selenium Bộ chọn CSS với thuộc tính ID.
cú pháp
css=tag#id
- tag = thẻ HTML của phần tử đang được truy cập
- # = dấu thăng, dấu này phải luôn có mặt khi sử dụng Selenium Bộ chọn CSS có ID
- id = ID của phần tử đang được truy cập
Hãy nhớ rằng ID luôn đứng trước dấu thăng (#).
Bước 1) Hướng đến www.facebook.comSử dụng công cụ dành cho nhà phát triển của trình duyệt (hoặc một công cụ cũ hơn như Firebug), hãy kiểm tra hộp văn bản "Email hoặc Số điện thoại".
Hãy lưu ý rằng thẻ HTML là “đầu vàovà ID của nó là “e-mailDo đó, bộ chọn CSS hoàn chỉnh trở thành “css=đầu vào#email".
Bước 2) Đi vào "css=đầu vào#email" vào Target hộp của Selenium IDE và nhấp vào nút Tìm. Selenium IDE sẽ làm nổi bật phần tử phù hợp trên trang.
Thẻ và Lớp – Bộ chọn CSS
Bộ chọn CSS trong Selenium Cách sử dụng thẻ HTML và tên lớp tuân theo cùng một ý tưởng như thẻ và ID, nhưng dấu chấm (.) thay thế cho dấu thăng.
cú pháp
css=tag.class
- tag = thẻ HTML của phần tử đang được truy cập
- . = dấu chấm, dấu này phải luôn có mặt khi sử dụng bộ chọn CSS với lớp.
- class = lớp của phần tử đang được truy cập
Bước 1) Mở trang demo https://demo.guru99.com/test/facebook.html và kiểm tra ô văn bản “Email hoặc Số điện thoại”. Lưu ý rằng thẻ HTML là “đầu vàovà lớp của nó là “văn bản đầu vào".
Bước 2) In Selenium IDE, nhập “css=input.inputtext" trong Target hộp và nhấp vào Tìm. Selenium IDE nhận diện hộp văn bản Email hoặc Số điện thoại.
Lưu ý rằng khi nhiều phần tử có cùng thẻ HTML và lớp, chỉ phần tử khớp đầu tiên trong mã nguồn mới được nhận diện. Hãy kiểm tra ô nhập mật khẩu trên cùng trang và lưu ý rằng nó có cùng lớp với ô nhập email hoặc số điện thoại.
Trong hình minh họa trước đó, chỉ có ô nhập Email hoặc Số điện thoại được tô sáng vì nó xuất hiện đầu tiên trong mã nguồn trang.
Thẻ và thuộc tính – Bộ chọn CSS
Chiến lược này kết hợp thẻ HTML với một thuộc tính cụ thể thuộc về phần tử mà bạn muốn truy cập.
cú pháp
css=tag[attribute=value]
- tag = thẻ HTML của phần tử đang được truy cập
- [ và ] = dấu ngoặc vuông bao quanh thuộc tính và giá trị tương ứng của nó
- thuộc tính = thuộc tính cần sử dụng. Hãy chọn một thuộc tính duy nhất cho phần tử, chẳng hạn như tên hoặc ID.
- value = giá trị tương ứng của thuộc tính được chọn.
Bước 1) Điều hướng đến Mercury Trang đăng ký tour du lịch https://demo.guru99.com/test/newtours/register.php và kiểm tra ô nhập liệu “Họ”. Lưu ý thẻ HTML của nó (“input”) và thuộc tính name (“lastName”).
Bước 2) In Selenium IDE, nhập “css=đầu vào[name=lastName]" trong Target hộp và nhấp vào Tìm. Selenium IDE đã tìm thấy thành công trường Họ.
Khi nhiều phần tử cùng chia sẻ thẻ HTML và thuộc tính giống nhau, chỉ phần tử đầu tiên được nhận diện. Hành vi này hoàn toàn giống với việc tìm kiếm các phần tử có cùng thẻ và lớp.
Thẻ, Lớp và Thuộc tính – Bộ chọn CSS
cú pháp
css=tag.class[attribute=value]
- tag = thẻ HTML của phần tử đang được truy cập
- . = dấu chấm, dấu này phải luôn có mặt khi sử dụng bộ chọn CSS với lớp.
- class = lớp của phần tử đang được truy cập
- [ và ] = dấu ngoặc vuông bao quanh một thuộc tính cụ thể và giá trị tương ứng của nó
- thuộc tính = thuộc tính cần sử dụng. Hãy chọn một thuộc tính duy nhất cho phần tử, chẳng hạn như tên hoặc ID.
- value = giá trị tương ứng của thuộc tính được chọn.
Bước 1) Mở trang demo https://demo.guru99.com/test/facebook.html và kiểm tra các ô nhập liệu “Email hoặc Số điện thoại” và “Mật khẩu”. Ghi chú thẻ HTML, lớp và thuộc tính của chúng. Ví dụ này sử dụng “chỉ mục tab" thuộc tính.
Bước 2) Trước tiên, hãy truy cập vào ô văn bản “Email hoặc Số điện thoại” bằng cách sử dụng giá trị tabindex là 1. Nhập “css=input.inputtext[tabindex=1]”Thành Selenium IDE's Target Mở hộp thoại và nhấp vào Tìm. Trường Email hoặc Số điện thoại sẽ được tô sáng.
Bước 3) Để nhắm mục tiêu vào ô nhập mật khẩu, chỉ cần thay thế giá trị tabindex. Nhập “css=input.inputtext[tabindex=2]" trong Target hộp và nhấp vào Tìm. Selenium IDE đã tìm thấy thành công ô nhập mật khẩu.
Văn bản bên trong – Bộ chọn CSS
Các nhãn HTML hiếm khi được gán thuộc tính id, name hoặc class. Vậy làm thế nào để truy cập chúng trong HTML? SeleniumCâu trả lời nằm ở nội dung ẩn bên trong của chúng. Văn bản bên trong là các chuỗi ký tự thực tế mà nhãn HTML hiển thị trên trang.
cú pháp
css=tag:contains("inner text")
- tag = thẻ HTML của phần tử đang được truy cập
- văn bản bên trong = nội dung văn bản hiển thị của phần tử
Bước 1) Điều hướng đến Mercury Trang chủ tour du lịch https://demo.guru99.com/test/newtours/ và kiểm tra nhãn “Mật khẩu”. Lưu ý thẻ HTML của nó (“font” trong trường hợp này) và quan sát thấy phần tử này không có thuộc tính class, id hoặc name.
Bước 2) Kiểu css=font:contains(“Mật khẩu:”) trong Selenium IDE's Target hộp và nhấp vào Tìm. Selenium IDE định vị nhãn Mật khẩu như hình bên dưới.
Bước 3) Lần này, hãy thay thế văn bản bên trong bằng “Boston” để Target trở thành “css=font:contains(“Boston”)Nhấp vào Tìm. Nhãn “Boston đến San Francisco” được tô sáng, cho thấy rằng Selenium IDE có thể định vị một nhãn dài ngay cả khi chỉ cung cấp từ đầu tiên của văn bản bên trong nhãn đó.
Bộ chọn CSS so với XPath trong Selenium
Cả bộ chọn CSS và XPath đều được sử dụng để xác định các phần tử web trong SeleniumTuy nhiên, chúng có những điểm mạnh khác nhau. Bảng dưới đây so sánh hai chiến lược định vị trên các khía cạnh chính:
| Tiêu chí | Bộ chọn CSS | Xpath |
|---|---|---|
| Tốc độ | Nhanh hơn, chạy trên công cụ gốc của trình duyệt. | Chậm hơn, đặc biệt là trên các trình duyệt cũ. |
| Chiều hướng | Chỉ chuyển tiếp (từ cha sang con) | Tiến và lùi (từ con đến cha mẹ) |
| cú pháp | Ngắn gọn hơn và tương tự như các quy tắc CSS. | Biểu thức đường dẫn phân cấp dài hơn |
| So khớp văn bản | Giới hạn ở lớp giả :contains() | Các hàm text() và contains() mạnh mẽ |
| Tốt nhất cho | Bố cục tĩnh và ứng dụng web hiện đại | Duyệt DOM phức tạp và định vị dựa trên văn bản |
Các phương pháp tốt nhất để viết bộ chọn CSS trong Selenium
Viết các bộ chọn CSS đáng tin cậy không chỉ đơn thuần là nắm vững cú pháp. Những phương pháp sau đây giúp người kiểm thử tạo ra các bộ chọn ổn định và dễ bảo trì. Selenium Các đoạn mã vẫn hoạt động bình thường sau khi giao diện người dùng thay đổi:
- Ưu tiên các thuộc tính độc đáo: Luôn chọn các thuộc tính id, data-test-id hoặc name được thêm vào một cách rõ ràng để tự động hóa. Các thuộc tính này sẽ ổn định ngay cả khi bố cục trực quan thay đổi.
- Tránh sử dụng các bộ chọn lồng nhau quá mức: Các chuỗi dài như
div > div > ul > li > aDễ bị lỗi khi lập trình viên chỉnh sửa lại mã HTML. Hãy giữ cho các bộ chọn càng ngắn càng tốt. - Hãy sử dụng các kết quả khớp một phần một cách khôn ngoan: Các mẫu như
[class*="btn-primary"]Có thể chấp nhận những thay đổi nhỏ về tên lớp, nhưng chúng cũng có thể trùng khớp với các phần tử không mong muốn. - Tránh sử dụng các công cụ định vị dựa trên chỉ mục: Các bộ chọn như
nth-child(3)Chúng rất dễ bị lỗi vì việc thêm một phần tử anh em sẽ làm thay đổi mọi vị trí. - Kiểm tra tính hợp lệ của các bộ chọn trong DevTools: Trước khi chạy một Selenium Sử dụng đoạn mã script, dán bộ chọn vào Bảng điều khiển Công cụ dành cho Nhà phát triển của Chrome.
document.querySelector()Để xác nhận rằng nó trả về chính xác một phần tử. - Kết hợp các thuộc tính để tạo nên sự độc đáo: Khi một lớp được nhiều phần tử chia sẻ, hãy thêm bộ lọc thuộc tính như sau:
input.form-control[name="email"]để làm rõ mục tiêu. - Ghi chép và tái sử dụng: Tập trung các bộ chọn bên trong một lớp Page Object để chỉ cần một lần cập nhật là có thể khắc phục mọi lỗi trong các bài kiểm tra tham chiếu đến cùng một phần tử.
Tuân thủ các hướng dẫn này giúp giảm thiểu sự không ổn định, cải thiện tốc độ thực thi kiểm thử và làm cho... Selenium Các căn hộ sẽ dễ bảo trì hơn theo thời gian.
Tóm tắt: Hướng dẫn nhanh về cú pháp bộ chọn CSS
Bảng dưới đây tổng hợp mọi thứ Selenium Mẫu chọn CSS được đề cập trong hướng dẫn này:
| Phương pháp | Target cú pháp | Ví dụ |
|---|---|---|
| Thẻ và ID | css=thẻ#id | css=đầu vào#email |
| Thẻ và Lớp | css=tag.class | css=input.inputtext |
| Thẻ và thuộc tính | css=tag[thuộc tính=giá trị] | css=đầu vào[name=lastName] |
| Thẻ, lớp và thuộc tính | css=tag.class[thuộc tính=giá trị] | css=input.inputtext[tabindex=1] |
| Văn bản bên trong | css=tag:contains(“text”) | css=font:contains(“Mật khẩu:”) |














