Khám phá cách chia sẻ luồng người dùng, chỉnh sửa luồng và các bước trong tài liệu tham khảo về các tính năng toàn diện này của bảng điều khiển Trình ghi cho Công cụ của Chrome cho nhà phát triển.
Để tìm hiểu thông tin cơ bản về cách thao tác với bảng điều khiển Recorder (Ghi lại), hãy xem bài viết Ghi lại, phát lại và đo lường luồng người dùng.
Tìm hiểu và tuỳ chỉnh phím tắt
Sử dụng phím tắt để điều hướng Máy ghi âm nhanh hơn. Để biết danh sách các phím tắt mặc định, hãy xem bài viết Phím tắt trên bảng điều khiển của Máy ghi âm.
Để mở gợi ý liệt kê tất cả phím tắt ngay trong Máy ghi âm, hãy nhấp vào Hiển thị phím tắt ở góc trên cùng bên phải.
Cách tuỳ chỉnh phím tắt của Máy ghi âm:
- Mở Cài đặt > Lối tắt.
- Cuộn xuống phần Máy ghi âm.
- Làm theo các bước trong phần Tuỳ chỉnh phím tắt.
Chỉnh sửa luồng người dùng
Ở đầu bảng điều khiển Recorder (Máy ghi âm), có các tuỳ chọn để bạn:
- Thêm bản ghi âm mới. Nhấp vào biểu tượng dấu + để thêm bản ghi mới.
- Xem tất cả bản ghi. Trình đơn thả xuống sẽ hiển thị danh sách các bản ghi âm đã lưu. Chọn [số] bản ghi âm để mở rộng và quản lý danh sách bản ghi âm đã lưu.
Xuất một bản ghi âm. Để tuỳ chỉnh thêm tập lệnh hoặc chia sẻ tập lệnh cho mục đích báo cáo lỗi, bạn có thể xuất luồng người dùng ở một trong các định dạng sau:
- JSON.
- @puppeteer/replay.
- [Puppeteer](/docs/puppeteer/ Script.
- Puppeteer (bao gồm cả phân tích Lighthouse).
Để biết thêm thông tin về các định dạng, hãy xem phần Xuất luồng người dùng.
Nhập một bản ghi âm. Chỉ ở định dạng JSON.
Xoá bản ghi âm. Xoá bản ghi âm đã chọn.
Bạn cũng có thể chỉnh sửa tên bản ghi âm bằng cách nhấp vào nút chỉnh sửa bên cạnh tên bản ghi âm đó.
Chia sẻ luồng người dùng
Bạn có thể xuất và nhập luồng người dùng trong ứng dụng Máy ghi âm. Việc này rất hữu ích khi báo cáo lỗi vì bạn có thể chia sẻ bản ghi chính xác về các bước tái hiện lỗi. Bạn cũng có thể xuất và phát lại với các thư viện bên ngoài.
Xuất luồng người dùng
Để xuất một luồng người dùng, hãy làm như sau:
- Mở luồng người dùng mà bạn muốn xuất.
- Nhấp vào Export (Xuất) ở đầu bảng điều khiển Recorder (Máy ghi âm).
- Chọn một trong các định dạng sau từ danh sách thả xuống:
- Tệp JSON. Tải bản ghi xuống dưới dạng tệp JSON.
- @puppeteer/phát lại. Tải bản ghi xuống dưới dạng tập lệnh Puppeteer Replay.
- Con rối. Tải bản ghi xuống dưới dạng tập lệnh Puppeteer.
- Puppeteer (bao gồm cả phân tích Lighthouse). Tải bản ghi xuống dưới dạng tập lệnh Puppeteer kèm theo bản phân tích Lighthouse được nhúng.
- Một hoặc nhiều lựa chọn do Tiện ích xuất của Máy ghi âm cung cấp.
- Lưu tệp.
Bạn có thể làm như sau với từng lựa chọn xuất mặc định:
- JSON. Chỉnh sửa đối tượng JSON mà con người có thể đọc được và import tệp JSON trở lại Recorder (Trình ghi).
- @puppeteer/phát lại. Phát lại kịch bản thông qua thư viện Puppeteer Replay (Phát lại kịch bản). Khi xuất dưới dạng tập lệnh @puppeteer/replay, các bước này vẫn là đối tượng JSON. Đây là phương án rất phù hợp nếu bạn muốn tích hợp với quy trình CI/CD nhưng vẫn có thể linh hoạt chỉnh sửa các bước dưới dạng JSON, sau đó chuyển đổi và nhập lại vào Máy ghi âm.
- Kịch bản của Puppeteer. Phát lại kịch bản bằng Puppeteer. Vì các bước này được chuyển đổi thành JavaScript nên bạn có thể tuỳ chỉnh chi tiết hơn, chẳng hạn như lặp lại các bước. Xin lưu ý rằng bạn không thể nhập tập lệnh này trở lại Máy ghi âm.
Puppeteer (bao gồm cả phân tích Lighthouse). Tùy chọn xuất này giống với tùy chọn trước nhưng bao gồm mã tạo ra một bản phân tích Lighthouse.
Chạy tập lệnh và xem kết quả trong tệp
flow.report.html
:# npm i puppeteer lighthouse node your_export.js
Xuất ở định dạng tuỳ chỉnh bằng cách cài đặt tiện ích
Xem Tiện ích Máy ghi âm.
Nhập một luồng người dùng
Để nhập luồng người dùng, hãy làm như sau:
- Nhấp vào nút Import (Nhập) ở đầu bảng điều khiển Recorder (Máy ghi âm).
- Chọn tệp JSON có luồng người dùng đã ghi lại.
- Nhấp vào nút Phát lại để chạy luồng người dùng đã nhập.
Phát lại với các thư viện bên ngoài
Puppeteer Replay là thư viện nguồn mở được duy trì bởi nhóm Công cụ của Chrome cho nhà phát triển. Ứng dụng này được xây dựng dựa trên Puppeteer. Đây là một công cụ dòng lệnh, bạn có thể phát lại các tệp JSON bằng công cụ này.
Ngoài ra, bạn có thể biến đổi và phát lại các tệp JSON bằng các thư viện bên thứ ba sau đây.
Chuyển đổi luồng người dùng JSON thành tập lệnh tuỳ chỉnh:
- Trình ghi Cypress Chrome. Bạn có thể sử dụng tệp này để chuyển đổi tệp JSON về luồng người dùng thành tập lệnh kiểm thử Cypress. Xem bản minh hoạ này để tìm hiểu cách hoạt động.
- Trình ghi của Chrome cho đồng hồ đêm. Bạn có thể sử dụng tệp này để chuyển đổi tệp JSON về luồng người dùng thành tập lệnh kiểm thử Nightwatch.
- Trình ghi của Chrome CodeceptJS. Bạn có thể sử dụng tệp này để chuyển đổi tệp JSON về luồng người dùng thành tập lệnh kiểm thử CodeceptJS.
Phát lại luồng người dùng JSON:
- Phát lại qua Testquán. Bạn có thể sử dụng TestCafe để phát lại các tệp JSON về luồng người dùng và tạo báo cáo thử nghiệm cho những bản ghi này.
- Phát lại qua Sauce Labs. Bạn có thể phát lại các tệp JSON trên Sauce Labs bằng saucectl.
Gỡ lỗi luồng người dùng
Giống như bất kỳ mã nào, đôi khi bạn phải gỡ lỗi các luồng người dùng đã ghi lại.
Để giúp bạn gỡ lỗi, bảng điều khiển Recorder (Ghi lại) cho phép bạn giảm tốc độ phát lại, đặt điểm ngắt, thực thi từng bước và kiểm tra mã ở nhiều định dạng song song với các bước.
Giảm tốc độ phát lại
Theo mặc định, Trình ghi phát lại quy trình của người dùng nhanh nhất có thể. Để hiểu những gì xảy ra trong bản ghi, bạn có thể giảm tốc độ phát lại:
- Mở trình đơn thả xuống Phát lại.
- Chọn một trong các tuỳ chọn tốc độ phát lại:
- Bình thường (Mặc định)
- Chậm
- Rất chậm
- Cực kỳ chậm
Kiểm tra mã
Để kiểm tra mã của luồng người dùng ở nhiều định dạng, hãy làm như sau:
- Mở một bản ghi âm trong bảng điều khiển Máy ghi âm.
- Nhấp vào Show code (Hiện mã) ở góc trên cùng bên phải của danh sách các bước.
- Máy ghi âm trình bày các bước và mã của các bước theo cạnh nhau.
- Khi bạn di chuột qua một bước, Máy ghi âm sẽ đánh dấu mã tương ứng ở bất kỳ định dạng nào, kể cả các mã do phần mở rộng cung cấp.
Mở rộng danh sách định dạng thả xuống để chọn định dạng mà bạn dùng để xuất luồng người dùng.
Đây có thể là một trong ba định dạng mặc định (JSON, @puppeteer/replay, Tập lệnh Puppeteer hoặc một định dạng do tiện ích cung cấp).
Tiếp tục gỡ lỗi bản ghi bằng cách chỉnh sửa các thông số và giá trị của bước. Bạn không thể chỉnh sửa chế độ xem mã, nhưng chế độ này sẽ cập nhật tương ứng khi bạn thực hiện thay đổi đối với các bước ở bên trái.
Đặt điểm ngắt và thực thi từng bước
Cách đặt một điểm ngắt và thực thi từng bước:
- Di chuột qua vòng tròn bên cạnh bước bất kỳ trong bản ghi âm. Vòng tròn sẽ chuyển thành một biểu tượng điểm ngắt .
- Nhấp vào biểu tượng điểm ngắt rồi phát lại bản ghi. Quá trình thực thi sẽ tạm dừng tại điểm ngắt.
- Để thực hiện từng bước, hãy nhấp vào nút Thực thi một bước trên thanh hành động ở đầu bảng điều khiển Recorder (Trình ghi).
- Để dừng phát lại, hãy nhấp vào Huỷ phát lại.
Chỉnh sửa các bước
Bạn có thể chỉnh sửa bất kỳ bước nào trong bản ghi bằng cách nhấp vào nút bên cạnh bước đó, cả trong và sau khi quay video.
Bạn cũng có thể thêm các bước bị thiếu và xoá những bước vô tình được ghi lại.
Thêm các bước
Đôi khi, bạn có thể cần phải thêm các bước theo cách thủ công. Ví dụ: Máy ghi âm không tự động ghi lại các sự kiện hover
vì việc này gây ô nhiễm cho quá trình ghi và không phải tất cả các sự kiện như vậy đều hữu ích. Tuy nhiên, các phần tử trên giao diện người dùng (chẳng hạn như trình đơn thả xuống) chỉ có thể xuất hiện trên hover
. Bạn có thể thêm các bước hover
theo cách thủ công vào quy trình của người dùng phụ thuộc vào các phần tử đó.
Cách thêm một bước theo cách thủ công:
- Mở trang minh hoạ này rồi bắt đầu bản ghi mới.
- Di chuột qua phần tử trong khung nhìn. Một trình đơn thao tác sẽ bật lên.
- Chọn một hành động trong trình đơn rồi kết thúc quá trình ghi. Trình ghi chỉ ghi lại sự kiện nhấp chuột.
- Thử phát lại bản ghi bằng cách nhấp vào Phát lại. Quá trình phát lại không thành công sau khi hết thời gian chờ vì Trình ghi âm không thể truy cập vào phần tử này trong trình đơn.
- Nhấp vào nút có biểu tượng ba dấu chấm bên cạnh bước Nhấp vào, rồi chọn Thêm bước trước.
- Mở rộng bước mới. Theo mặc định, mã này có loại
waitForElement
. Nhấp vào giá trị bên cạnhtype
rồi chọnhover
. - Tiếp theo, hãy đặt bộ chọn thích hợp cho bước mới. Nhấp vào Chọn, sau đó nhấp vào một vùng trên phần tử
Hover over me!
nằm ngoài trình đơn bật lên. Bộ chọn được đặt thành#clickable
. - Thử phát lại bản ghi. Sau khi thêm bước di chuột, Recorder (Ghi âm) sẽ phát lại thành công quy trình này.
Thêm câu nhận định
Ví dụ: trong quá trình ghi lại, bạn có thể xác nhận các thuộc tính HTML và thuộc tính JavaScript. Cách thêm câu nhận định:
- Bắt đầu ghi lại, chẳng hạn như trên trang minh hoạ này.
Nhấp vào Thêm câu nhận định.
Máy ghi âm tạo một bước
waitForElement
có thể định cấu hình.Chỉ định bộ chọn cho bước này.
Định cấu hình bước này nhưng không thay đổi loại
waitForElement
của bước này. Ví dụ: bạn có thể chỉ định:- Thuộc tính HTML. Nhấp vào Thêm thuộc tính rồi nhập tên và giá trị của thuộc tính mà các phần tử trên trang này sử dụng. Ví dụ:
data-test: <value>
. - Thuộc tính JavaScript. Nhấp vào Thêm cơ sở lưu trú rồi nhập tên và giá trị của cơ sở lưu trú ở định dạng JSON. Ví dụ:
{".innerText":"<text>"}
. - Các thuộc tính bước khác. Ví dụ:
visible: true
.
- Thuộc tính HTML. Nhấp vào Thêm thuộc tính rồi nhập tên và giá trị của thuộc tính mà các phần tử trên trang này sử dụng. Ví dụ:
Tiếp tục ghi phần còn lại của quy trình người dùng, sau đó dừng ghi.
Nhấp vào Phát lại. Nếu câu nhận định không thành công, Recorder (Ghi lại) sẽ hiển thị lỗi sau khi hết giờ.
Hãy xem video sau đây để xem quy trình làm việc này trong thực tế.
Sao chép các bước
Thay vì xuất toàn bộ luồng người dùng, bạn có thể sao chép một bước duy nhất vào bảng nhớ tạm:
- Nhấp chuột phải vào bước bạn muốn sao chép hoặc nhấp vào biểu tượng ba dấu chấm bên cạnh bước đó.
- Trong trình đơn thả xuống, hãy chọn một trong các lựa chọn Sao chép dưới dạng ....
Bạn có thể sao chép các bước ở nhiều định dạng: JSON, Puppeteer, @puppeteer/replay và những định dạng do các tiện ích cung cấp.
Xoá các bước
Để xoá một bước vô tình được ghi lại, hãy nhấp chuột phải vào bước đó hoặc nhấp vào biểu tượng ba dấu chấm bên cạnh bước đó rồi chọn Xoá bước.
Ngoài ra, Máy ghi âm tự động thêm hai bước riêng biệt để bắt đầu mỗi bản ghi:
- Thiết lập khung nhìn. Cho phép bạn kiểm soát kích thước, tỷ lệ và các thuộc tính khác của khung nhìn.
- Điều hướng. Đặt URL và tự động làm mới trang cho mỗi lần phát lại.
Để tự động hoá trong trang mà không cần tải lại trang, hãy xoá bước điều hướng như mô tả ở trên.
Thiết lập các bước
Cách định cấu hình một bước:
Chỉ định kiểu dữ liệu:
click
,doubleClick
,hover
, (dữ liệu đầu vào)change
,keyUp
,keyDown
,scroll
,close
,navigate
(vào một trang),waitForElement
,waitForExpression
hoặcsetViewport
.Các thuộc tính khác phụ thuộc vào giá trị
type
.Hãy chỉ định các thuộc tính bắt buộc bên dưới
type
.Nhấp vào các nút tương ứng để thêm các thuộc tính không bắt buộc theo kiểu cụ thể và chỉ định các thuộc tính đó.
Để biết danh sách các thuộc tính hiện có, hãy xem bài viết Thuộc tính bước.
Để xóa một thuộc tính không bắt buộc, hãy nhấp vào nút Xóa bên cạnh thuộc tính đó.
Để thêm hoặc xoá một phần tử khỏi hoặc khỏi một thuộc tính mảng, hãy nhấp vào nút + hoặc - bên cạnh phần tử đó.
Thuộc tính bước
Mỗi bước có thể có các thuộc tính không bắt buộc sau:
target
—URL cho mục tiêu Giao thức Công cụ của Chrome cho nhà phát triển (CDP), từ khóamain
mặc định đề cập đến trang hiện tại.assertedEvents
hiện chỉ có thể là một sự kiệnnavigation
duy nhất
Các thuộc tính phổ biến khác có sẵn cho hầu hết các loại bước là:
frame
– một mảng các chỉ mục dựa trên 0 giúp xác định một iframe có thể lồng ghép. Ví dụ: bạn có thể xác định iframe đầu tiên (0) bên trong iframe thứ hai (1) của mục tiêu chính dưới dạng[1, 0]
.timeout
– số mili giây để chờ trước khi thực thi một bước. Để biết thêm thông tin, hãy xem bài viết Điều chỉnh thời gian chờ cho các bước.selectors
– một mảng bộ chọn. Để biết thêm thông tin, hãy xem phần Tìm hiểu về bộ chọn.
Các thuộc tính theo loại cụ thể là:
Loại | Tài sản | Bắt buộc | Nội dung mô tả |
click doubleClick |
offsetX offsetY |
So với phía trên cùng bên trái của hộp nội dung thành phần, tính bằng pixel | |
click doubleClick |
button |
Nút con trỏ: chính | phụ | thứ hai | quay lại | tiến | |
change |
value |
Giá trị cuối cùng | |
keyDown keyUp |
key |
Tên khoá | |
scroll |
x y |
Vị trí cuộn x và y tuyệt đối tính bằng pixel, mặc định là 0 | |
navigate |
url |
URL mục tiêu | |
waitForElement |
operator |
>= | == (mặc định) | <= | |
waitForElement |
count |
Số phần tử được xác định bằng bộ chọn | |
waitForElement |
attributes |
Thuộc tính HTML và giá trị của thuộc tính này | |
waitForElement |
properties |
Thuộc tính JavaScript và giá trị của thuộc tính này trong JSON | |
waitForElement |
visible |
Boolean. Đúng nếu phần tử nằm trong DOM và hiển thị (không có display: none hoặc visibility: hidden ) |
|
waitForElement waitForExpression |
asserted events |
Hiện tại, chỉ có type: navigation nhưng bạn có thể chỉ định tiêu đề và URL |
|
waitForElement waitForExpression |
timeout |
Thời gian chờ tối đa tính bằng mili giây | |
waitForExpression |
expression |
Biểu thức JavaScript phân giải thành true | |
setViewport |
width height |
Chiều rộng và chiều cao của khung nhìn tính bằng pixel | |
setViewport |
deviceScaleFactor |
Tương tự với Tỷ lệ pixel của thiết bị (DPR), mặc định là 1 | |
setViewport |
isMobile hasTouch isLandscape |
Cờ boolean chỉ định liệu: |
Có 2 thuộc tính khiến quá trình phát lại tạm dừng:
Thuộc tính
waitForElement
khiến bước này chờ sự hiện diện (hoặc không có) của một số phần tử được xác định bằng bộ chọn. Ví dụ: bước sau đây chờ ít hơn 3 phần tử xuất hiện trên trang khớp với bộ chọn.my-class
."type": "waitForElement", "selectors": [".my-class"], "operator": "<=", "count": 2,
Thuộc tính
waitForExpression
khiến bước này chờ biểu thức JavaScript phân giải thành true. Ví dụ: bước sau đây tạm dừng trong 2 giây rồi chuyển thành true để tiếp tục phát lại."type": "waitForExpression", "expression": "new Promise(resolve => setTimeout(() => resolve(true), 2000))",
Điều chỉnh thời gian chờ cho các bước
Trong trường hợp trang của bạn có các yêu cầu mạng chậm hoặc ảnh động dài, thì quá trình phát lại có thể không thành công ở các bước vượt quá thời gian chờ mặc định (5000
mili giây).
Để tránh sự cố này, bạn có thể điều chỉnh thời gian chờ mặc định cho từng bước cùng một lúc hoặc đặt thời gian chờ riêng cho các bước cụ thể. Thời gian chờ của các bước cụ thể sẽ ghi đè thời gian chờ mặc định.
Cách điều chỉnh thời gian chờ mặc định cho từng bước cùng một lúc:
Nhấp vào Cài đặt phát lại để chỉnh sửa hộp Thời gian chờ.
Trong hộp Thời gian chờ, đặt giá trị thời gian chờ bằng mili giây.
Hãy nhấp vào Phát lại để xem thời gian chờ mặc định được điều chỉnh trong thực tế.
Cách ghi đè thời gian chờ mặc định cho một bước cụ thể:
Mở rộng bước này rồi nhấp vào Thêm thời gian chờ.
Nhấp vào
timeout: <value>
và đặt giá trị theo mili giây.Nhấp vào Phát lại để xem bước áp dụng thời gian chờ.
Để loại bỏ phần ghi đè thời gian chờ trên một bước, hãy nhấp vào nút Xoá bên cạnh bước đó.
Tìm hiểu về bộ chọn
Khi bắt đầu một bản ghi mới, bạn có thể định cấu hình những mục sau:
- Trong hộp văn bản Thuộc tính bộ chọn, hãy nhập một thuộc tính kiểm thử tuỳ chỉnh. Trình ghi sẽ sử dụng thuộc tính này để phát hiện bộ chọn thay vì danh sách thuộc tính kiểm thử phổ biến.
Trong tập hợp hộp đánh dấu Loại bộ chọn để ghi lại, hãy chọn loại bộ chọn để tự động phát hiện:
- Dịch vụ so sánh giá. Bộ chọn cú pháp.
- ARIA. Bộ chọn ngữ nghĩa.
- Văn bản. Bộ chọn có văn bản duy nhất ngắn nhất (nếu có).
- XPath. Bộ chọn sử dụng Ngôn ngữ đường dẫn XML.
- Pierce. Bộ chọn tương tự như bộ chọn CSS nhưng có thể xuyên qua DOM bóng.
Bộ chọn kiểm thử phổ biến
Đối với các trang web đơn giản, thuộc tính id
và thuộc tính CSS class
là đủ để Máy ghi âm phát hiện bộ chọn. Tuy nhiên, điều đó không phải lúc nào cũng đúng vì:
- Các trang web của bạn có thể sử dụng các lớp hoặc mã động có thể thay đổi.
- Bộ chọn của bạn có thể bị hỏng do các thay đổi về mã hoặc khung.
Ví dụ: Các giá trị class
của CSS có thể được tạo tự động cho những ứng dụng được phát triển bằng các khung JavaScript hiện đại (ví dụ: React, Angular, Vue) và các khung CSS.
Trong những trường hợp này, bạn có thể sử dụng các thuộc tính data-*
để tạo các bài kiểm thử có khả năng phục hồi cao hơn. Đã có một số bộ chọn data-*
phổ biến mà nhà phát triển dùng cho quá trình tự động hoá. Máy ghi âm cũng hỗ trợ các ghi âm này.
Nếu bạn đã xác định các bộ chọn thử nghiệm phổ biến sau đây trên trang web của mình, thì Máy ghi âm sẽ tự động phát hiện và sử dụng các bộ chọn đó trước tiên:
data-testid
data-test
data-qa
data-cy
data-test-id
data-qa-id
data-testing
Ví dụ: kiểm tra phần tử "Cappuchno" trên trang minh hoạ này và xem các thuộc tính kiểm tra:
Ghi lại một lượt nhấp vào "Cappucno", mở rộng bước tương ứng trong bản ghi và kiểm tra các bộ chọn được phát hiện:
Tuỳ chỉnh bộ chọn bản ghi âm
Bạn có thể tuỳ chỉnh bộ chọn của một bản ghi nếu các bộ chọn kiểm thử phổ biến không phù hợp với bạn.
Ví dụ: trang minh hoạ này sử dụng thuộc tính data-automate
làm bộ chọn. Bắt đầu bản ghi mới rồi nhập data-automate
làm thuộc tính bộ chọn.
Điền địa chỉ email và quan sát giá trị bộ chọn ([data-automate=email-address]
).
Mức độ ưu tiên của bộ chọn
Máy ghi âm sẽ tìm các bộ chọn theo thứ tự sau đây, tuỳ thuộc vào việc bạn có chỉ định thuộc tính bộ chọn CSS tuỳ chỉnh hay không:
- Nếu được chỉ định:
- Bộ chọn CSS với thuộc tính CSS tuỳ chỉnh của bạn.
- Bộ chọn XPath.
- Bộ chọn ARIA nếu tìm thấy.
- Bộ chọn có văn bản duy nhất ngắn nhất nếu tìm thấy.
- Nếu không được chỉ định:
- Bộ chọn ARIA nếu tìm thấy.
- Bộ chọn CSS có mức độ ưu tiên sau:
- Các thuộc tính phổ biến nhất được dùng để kiểm thử:
data-testid
data-test
data-qa
data-cy
data-test-id
data-qa-id
data-testing
- Thuộc tính mã nhận dạng, ví dụ:
<div id="some_ID">
. - Bộ chọn CSS thông thường.
- Các thuộc tính phổ biến nhất được dùng để kiểm thử:
- Bộ chọn XPath.
- Bộ chọn Pierce.
- Bộ chọn có văn bản duy nhất ngắn nhất nếu tìm thấy.
Có thể có nhiều bộ chọn CSS, XPath và Pierce thông thường. Máy ghi âm ghi lại:
- Bộ chọn CSS và XPath thông thường ở mọi cấp gốc, tức là máy chủ lưu trữ bóng lồng nhau, nếu có.
- Bộ chọn xuyên qua là duy nhất trong số tất cả các phần tử bên trong tất cả các gốc bóng.