Trong automation, viết XPath linh hoạt là một kỹ năng rất quan trọng để xử lý các giao diện có cấu trúc động, text thay đổi hoặc id được sinh tự động.

Về bản chất, XPath linh hoạt không phải là viết XPath dài và phức tạp, mà là viết XPath dựa trên những đặc điểm ổn định nhất của phần tử và của cấu trúc giao diện.

Trước hết, cần tránh phụ thuộc tuyệt đối vào các thuộc tính dễ thay đổi như id sinh tự động, index thuần túy hoặc toàn bộ text hiển thị. Những locator kiểu này thường chạy được ở thời điểm hiện tại, nhưng rất dễ vỡ khi giao diện thay đổi nhỏ hoặc dữ liệu hiển thị khác đi.

Thay vào đó, nên ưu tiên sử dụng các điều kiện so khớp một phần như contains hoặc starts-with để xử lý các giá trị động. Ví dụ, nếu id có tiền tố cố định nhưng phần sau được sinh ngẫu nhiên, thì có thể dựa vào phần ổn định đó để xác định phần tử. Tuy nhiên, khi sử dụng các hàm này, cần đảm bảo rằng giá trị được chọn là đủ đặc trưng để không match nhầm nhiều phần tử khác.

Một nguyên tắc quan trọng khác là tận dụng quan hệ giữa các phần tử trên giao diện. Thay vì tìm trực tiếp một nút hoặc một ô input bằng thuộc tính của chính nó, có thể xác định nó thông qua nhãn hiển thị, tiêu đề cột, hoặc một phần tử lân cận ổn định. Cách tiếp cận theo quan hệ cha–con, anh–em hoặc container giúp XPath bền vững hơn khi các thuộc tính bên trong bị thay đổi.

Trong các màn hình danh sách hoặc bảng dữ liệu, XPath linh hoạt thường được xây dựng theo hướng tìm đúng dòng trước, sau đó mới tìm phần tử cần thao tác bên trong dòng đó. Điều này giúp script không phụ thuộc vào vị trí cố định của dòng trong bảng.

Ngoài ra, khi giao diện có nhiều phần tử giống nhau, nên kết hợp nhiều điều kiện trong cùng một XPath, chẳng hạn kết hợp tag, class, role hoặc một phần thuộc tính để tăng độ chính xác, thay vì chỉ dựa vào một điều kiện đơn lẻ.

Tuy nhiên, cũng cần lưu ý rằng XPath càng linh hoạt thì nguy cơ match nhầm càng cao nếu không kiểm soát tốt phạm vi tìm kiếm. Vì vậy, luôn nên giới hạn XPath trong một container rõ ràng, chẳng hạn một form, một dialog hoặc một bảng cụ thể.

  Tóm lại, viết XPath linh hoạt là viết XPath dựa trên các đặc điểm ổn định của giao diện, tận dụng quan hệ giữa các phần tử và tránh phụ thuộc vào các giá trị dễ thay đổi. Mục tiêu không phải là tìm cho ra một XPath chạy được ngay lúc viết, mà là xây dựng locator có khả năng chịu được sự thay đổi của UI trong các phiên bản sau.

Last modified: Monday, 2 March 2026, 2:15 PM