Lỗi xpath của phần tử bị thay đổi:

Việc XPath của phần tử trên ứng dụng (web/mobile) bị thay đổi thường do cấu trúc HTML/UI thay đổi, thuộc tính động (ID, class) thay đổi liên tục sau mỗi lần load, thay đổi framework/thư viện frontend, hoặc phần tử nằm trong danh sách thay đổi thứ tự. Sử dụng XPath tuyệt đối hoặc các phần tử tự sinh cũng gây ra sự mất ổn định này.

Các nguyên nhân cụ thể bao gồm:
  • Sử dụng XPath tuyệt đối (Absolute XPath): XPath bắt đầu từ gốc (/html/body/...) dễ bị phá vỡ nhất khi chỉ một phần tử nhỏ thay đổi vị trí.
  • Thuộc tính động (Dynamic Attributes): Các giá trị ID, Class hoặc Name thay đổi liên tục sau mỗi lần tải trang (ví dụ: id="button_123" thành id="button_456").
  • Thay đổi cấu trúc giao diện (UI Changes): Nhà phát triển thêm/bớt thẻ div, thay đổi thứ tự phần tử hoặc cập nhật giao diện khiến đường dẫn XPath không còn chính xác.
  • Phần tử trong danh sách/bảng (Dynamic Lists): Các phần tử nằm trong danh sách (list) hoặc bảng (table) có thể thay đổi thứ tự hoặc số lượng, ảnh hưởng đến index trong XPath (ví dụ: //div[2] chuyển thành //div[3]).
  • Sử dụng Framework/Thư viện (React, Angular, Vue): Các framework hiện đại thường sinh mã tự động (auto-generated code) với các class hoặc id ngẫu nhiên, thay đổi sau mỗi lần build.
  • Phần tử ẩn/hiện hoặc tải chậm (Dynamic Loading): Các phần tử được load qua AJAX hoặc xuất hiện/biến mất nhanh, khiến XPath tạm thời không tìm thấy hoặc bị sai lệch.
Cách khắc phục:
  • Sử dụng XPath tương đối (//) thay vì tuyệt đối.
  • Sử dụng thuộc tính tĩnh (static) hoặc contains(), để định vị các phần tử có thuộc tính động.
  • Dựa vào id hoặc class cố định, hoặc thêm các thuộc tính riêng nếu có thể.

Last modified: Wednesday, 25 February 2026, 9:53 AM