Với các bài toán automation liên quan đến list, table và pagination, khó khăn không nằm ở việc “lấy được element”, mà nằm ở chỗ xử lý dữ liệu hiển thị động, nhiều dòng, nhiều trang và thay đổi theo điều kiện lọc hoặc sắp xếp. Vì vậy, cách tiếp cận đúng nên tập trung vào hành vi của danh sách và bảng dữ liệu, thay vì phụ thuộc cứng vào từng vị trí dòng hoặc cột.

Trước hết, cần xác định rõ mục tiêu kiểm thử của list hoặc table là gì. Thông thường, mục tiêu không phải là kiểm tra toàn bộ dữ liệu hiển thị trên màn hình, mà là kiểm tra một số hành vi chính như dữ liệu có được hiển thị đúng theo điều kiện tìm kiếm, lọc hoặc sắp xếp hay không; một bản ghi cụ thể có xuất hiện trong danh sách hay không; hoặc khi người dùng thao tác trên một dòng thì hệ thống phản hồi đúng hay không. Việc xác định đúng mục tiêu giúp tránh viết test phụ thuộc quá sâu vào cấu trúc chi tiết của bảng.

Đối với table, không nên định vị trực tiếp từng ô bằng chỉ số dòng, cột cố định. Thay vào đó, nên xây dựng cách lấy toàn bộ danh sách dòng đang hiển thị, sau đó xử lý bằng logic trong script hoặc keyword. Ví dụ, lấy danh sách các row, sau đó duyệt từng row để tìm dòng có giá trị cột thỏa điều kiện mong muốn, rồi mới thực hiện thao tác trên dòng đó. Cách này giúp script không bị vỡ khi thứ tự dữ liệu thay đổi.

Một vấn đề rất thường gặp là dữ liệu trong table được load bất đồng bộ. Vì vậy, cần có cơ chế chờ cho table load xong, chẳng hạn chờ số dòng lớn hơn 0, chờ spinner biến mất, hoặc chờ một phần tử đại diện cho trạng thái “đã có dữ liệu” xuất hiện. Việc này quan trọng hơn rất nhiều so với việc chờ một khoảng thời gian cố định.

Với list hiển thị dạng card hoặc item, tư duy xử lý cũng tương tự. Nên lấy tập các item đang hiển thị, sau đó tìm item phù hợp theo nội dung hoặc thuộc tính, thay vì định vị item theo vị trí như item thứ nhất, item thứ hai. Điều này giúp test ổn định hơn khi dữ liệu thay đổi.

Đối với pagination, hướng xử lý đúng là coi đây là một bài toán duyệt tập dữ liệu qua nhiều trang. Script cần được thiết kế để có thể lặp qua các trang, tại mỗi trang thu thập hoặc tìm kiếm dữ liệu cần thiết, và dừng lại khi tìm thấy kết quả hoặc khi đã đến trang cuối. Khi chuyển trang, cần chờ đúng điều kiện để đảm bảo dữ liệu của trang mới đã được load xong, thay vì tiếp tục xử lý ngay sau khi click nút Next.

Một điểm quan trọng khác là không nên phụ thuộc vào tổng số trang hoặc tổng số bản ghi hiển thị trên giao diện, vì các con số này rất dễ thay đổi theo môi trường và dữ liệu test. Thay vào đó, nên dựa vào trạng thái thực tế của pagination, ví dụ như nút Next bị disable, hoặc không còn trang tiếp theo.

Trong nhiều trường hợp, để kiểm tra tính đúng đắn của dữ liệu trong list hoặc table, cách làm hiệu quả hơn là so sánh với dữ liệu từ API hoặc database, thay vì cố gắng xác nhận toàn bộ nội dung trực tiếp trên UI. UI khi đó chỉ đóng vai trò xác nhận rằng dữ liệu đã được hiển thị đúng, không phải là nơi để thực hiện tất cả các kiểm tra chi tiết.

  Kết luận: đối với các bài toán automation liên quan đến list, table và pagination, tư duy đúng là xử lý dữ liệu theo tập, theo điều kiện và theo hành vi điều hướng, thay vì xử lý theo vị trí cố định. Việc kết hợp giữa locator ổn định, cơ chế wait theo trạng thái thực và logic duyệt dữ liệu sẽ giúp test script linh hoạt, dễ bảo trì và ít bị ảnh hưởng khi giao diện thay đổi.

Sửa lần cuối: Thứ Hai, 2 tháng 3 2026, 9:00 AM