Mã định danh thứ tự trong QTP/UFTVí dụ về nhận dạng đối tượng
⚡ Tóm tắt thông minh
Mã định danh thứ tự trong QTP/UFT là yếu tố quyết định thắng thua UFT Phương pháp này được áp dụng khi các thuộc tính bắt buộc và hỗ trợ vẫn khớp với nhiều hơn một đối tượng, sử dụng các giá trị Index, Location hoặc CreationTime để chọn một đối tượng duy nhất.

Mã định danh thứ tự là gì trong QTP/UFT?
An Mã định danh thứ tự là một thuộc tính số học UFT (trước kia QTPChức năng này bổ sung thêm thông tin vào mô tả đối tượng khi các thuộc tính bắt buộc và hỗ trợ được ghi lại trong quá trình ghi dữ liệu không đủ để xác định đối tượng một cách duy nhất. Thay vì báo lỗi, công cụ sẽ sử dụng bộ đếm để thay thế, về cơ bản có nghĩa là "hãy chọn đối tượng thứ ba thuộc lớp này".
Theo mặc định, mỗi lớp đối tượng kiểm thử đều có một loại định danh thứ tự. WebEdit được đánh số khác với WinButton, và Browser lại được đánh số khác nữa. Bạn có thể xem hoặc sửa đổi định danh thứ tự mặc định cho một lớp trong cửa sổ Nhận dạng Đối tượng.
Như ảnh chụp màn hình ở trên cho thấy, menu thả xuống Mã định danh thứ tự nằm ở cuối hộp thoại Nhận dạng đối tượng, bên dưới danh sách thuộc tính bắt buộc và hỗ trợ. Vị trí đó không phải ngẫu nhiên: nó phản ánh thứ tự mà UFT Trên thực tế, ông ấy tham khảo ý kiến của cả ba nhóm.
Có ba loại định danh thứ tự trong UFT:
- Dựa trên chỉ mục
- Dựa trên địa điểm
- Thời gian sáng tạo
Tại sao UFT Chỉ sử dụng định danh thứ tự như một biện pháp cuối cùng.
Nhận dạng đối tượng trong UFT Quá trình này diễn ra theo kiểu xếp tầng. Các thuộc tính bắt buộc được học trước. Nếu chúng không tạo ra bất kỳ kết quả trùng khớp nào, các thuộc tính hỗ trợ sẽ được thêm vào từng cái một cho đến khi mô tả trở nên duy nhất. Chỉ khi cả hai nhóm đều được sử dụng hết thì... UFT Gắn một mã định danh thứ tự, và trong quá trình thực thi, cơ chế Nhận dạng Thông minh sẽ được tham khảo trước khi giá trị thứ tự được tin cậy.
Lý do cho thứ hạng đó là tính ổn định. Các đặc tính bắt buộc và hỗ trợ mô tả gì Một đối tượng bao gồm: tên của nó, thẻ HTML của nó, kiểu dữ liệu của nó, nhãn của nó. Mã định danh thứ tự chỉ mô tả... Ở đâu Vật thể tình cờ nằm ở vị trí đó vào thời điểm ghi hình. Bất cứ điều gì làm thay đổi trang đều làm thay đổi số:
- Lập trình viên chèn một trường ẩn phía trên trường mà bạn đã tự động hóa.
- Biểu ngữ quảng cáo bổ sung thêm hai liên kết vào phần đầu trang.
- Bố cục thích ứng tự động điều chỉnh bố cục biểu mẫu từ hai cột thành một cột.
- Một cửa sổ trình duyệt bật lên xuất hiện sớm hơn so với lần chạy được ghi lại.
Không có thay đổi nào trong số này phá vỡ mô tả được xây dựng dựa trên tên hoặc ID, nhưng mỗi thay đổi đều âm thầm dịch chuyển mọi giá trị chỉ mục và vị trí trên trang. Đó là lý do tại sao các kỹ sư giàu kinh nghiệm coi định danh thứ tự là tín hiệu cho thấy mô tả đối tượng cần được chỉnh sửa, chứ không phải là một giải pháp hoàn chỉnh. Nguyên tắc tương tự cũng áp dụng cho tất cả các trường hợp khác. kiểm tra tự động hóa các khuôn khổ nói chung, bao gồm chiến lược định vị trong Selenium.
💡 Mẹo: Trước khi chấp nhận một mã định danh thứ tự, hãy mở đối tượng trong Object Spy và tìm kiếm một thuộc tính tùy chỉnh ổn định. Việc thêm thuộc tính đó vào danh sách thuộc tính hỗ trợ cho lớp thường loại bỏ nhu cầu sử dụng mã định danh thứ tự cho mọi đối tượng cùng loại trong tương lai.
Các loại định danh thứ tự trong UFT/QTP
Dựa trên chỉ mục
- Khi sử dụng định danh thứ tự dựa trên chỉ mục, UFT gán giá trị cho chỉ số Thuộc tính của đối tượng trong quá trình ghi.
- Giá trị này dựa trên thứ tự xuất hiện của đối tượng trong mã nguồn, chứ không phải trên màn hình.
- Lần xuất hiện đầu tiên có giá trị là 0.
- Các giá trị thuộc tính chỉ mục là đặc thù của từng đối tượng, do đó mỗi lớp đối tượng kiểm thử được tính riêng biệt.
- Do đó, nếu bạn sử dụng index:=3 để mô tả đối tượng kiểm thử WebEdit, UFT Tìm kiếm đối tượng WebEdit thứ tư trên trang.
- Tương tự, nếu bạn sử dụng index:=1 để mô tả đối tượng kiểm thử WebButton, UFT Tìm kiếm đối tượng WebButton thứ hai trên trang.
Dựa trên địa điểm
- Khi sử dụng mã định danh thứ tự dựa trên vị trí, UFT gán giá trị cho địa điểm thư viện nào Thuộc tính của đối tượng để nhận dạng nó một cách duy nhất.
- Giá trị dựa trên thứ tự mà đối tượng xuất hiện trong cửa sổ, khung hoặc hộp thoại, so với các đối tượng khác có thuộc tính giống hệt nhau.
- Lần xuất hiện đầu tiên của đối tượng là 0.
- Các giá trị được gán theo cột, từ trên xuống dưới rồi từ trái sang phải.
- Vị trí là mã định danh thứ tự mặc định cho hầu hết các tiêu chuẩn. Windows kiểm thử các lớp đối tượng, nơi bố cục trực quan ổn định hơn thứ tự đánh dấu.
Thời gian sáng tạo
- Khi sử dụng mã định danh thứ tự thời gian tạo, UFT gán giá trị cho thời gian tạo thuộc tính của một đối tượng trình duyệt.
- Mã định danh này chỉ khả dụng trong môi trường Web và chỉ dành cho các đối tượng kiểm thử trình duyệt.
- Giá trị này cho biết thứ tự trình duyệt được mở so với các trình duyệt khác đang mở.
- Trình duyệt đầu tiên được mở trong quá trình chạy sẽ nhận được creationtime:=0, và các trình duyệt tiếp theo sẽ nhận được 1, 2, 3, v.v.
- Nếu một trình duyệt bị đóng, các trình duyệt còn lại sẽ giữ nguyên giá trị ban đầu thay vì được đánh số lại.
Bảng so sánh giữa Chỉ mục, Vị trí và Thời gian tạo
Ba mã định danh này trả lời ba câu hỏi khác nhau, và việc chọn sai mã định danh thường là nguyên nhân gây ra các lỗi không liên tục.
| Yếu tố | Chỉ số | Địa điểm | Thời gian sáng tạo |
|---|---|---|---|
| Tên tài sản | chỉ số | địa điểm thư viện nào | thời gian tạo |
| Cơ sở đặt hàng | Thứ tự trong mã nguồn / cấu trúc phân cấp đối tượng | Vị trí hiển thị trên màn hình bên trong cửa sổ, khung hoặc hộp thoại. | Thứ tự các phiên bản trình duyệt được mở |
| Quy tắc đếm | Tuần tự, theo từng lớp đối tượng kiểm thử | Các cột, từ trên xuống dưới rồi từ trái sang phải. | Tuần tự, cho mỗi phiên bản trình duyệt |
| Giá trị đầu tiên | 0 | 0 | 0 |
| Áp dụng cho | Web và Windows các lớp học | Chủ yếu là tiêu chuẩn Windows các lớp học | Chỉ các đối tượng trình duyệt |
| Vỡ khi | Thay đổi thứ tự đánh dấu | Bố cục được định vị lại hoặc thay đổi kích thước. | Windows mở theo trình tự khác |
| Sử dụng tốt nhất cho | Điều khiển lưới hoặc bảng lặp lại | Các biểu mẫu máy tính để bàn cũ với bố cục cố định | Luồng web đa cửa sổ, ví dụ như cửa sổ bật lên thanh toán. |
Cách thiết lập mã định danh thứ tự trong kho lưu trữ đối tượng
Mã định danh thứ tự được cấu hình cho mỗi lớp đối tượng kiểm thử và được áp dụng tự động cho mọi đối tượng thuộc lớp đó. UFT Học hỏi sau đó. Các đối tượng hiện có trong kho lưu trữ sẽ không được cập nhật hồi tố.
- Mở UFT và chọn Công cụ > Nhận dạng đối tượng.
- Chọn môi trường, ví dụ: Web hoặc Standard. Windows, từ menu thả xuống Môi trường.
- Chọn lớp đối tượng kiểm thử mà bạn muốn thay đổi, chẳng hạn như WebEdit hoặc WinButton.
- Trong tạp chí Mã định danh thứ tự Trong phần này, hãy chọn Chỉ mục, Vị trí, Thời gian tạo hoặc Không có.
- Nhấp chuột OK và học lại đối tượng để giá trị thứ tự mới được ghi nhận.
- Mở Kho lưu trữ đối tượng, chọn đối tượng và xác nhận thuộc tính thứ tự hiện đã xuất hiện trong danh sách mô tả.
Chọn Không áp dụng Vô hiệu hóa hoàn toàn cơ chế dự phòng cho lớp đó. UFT Khi đó, hệ thống sẽ báo lỗi nhận dạng thay vì đoán mò, đây thường là hành vi bạn mong muốn trong một bộ kiểm thử mà việc nhận dạng sai âm thầm gây thiệt hại nhiều hơn là một lỗi rõ ràng. Ghi lại kỳ vọng của bạn một cách rõ ràng. trường hợp thử nghiệm Điều này làm cho sự đánh đổi đó trở nên rõ ràng đối với toàn đội.
⚠️ Cảnh báo: Việc thay đổi mã định danh thứ tự cho một lớp là một thiết lập ở cấp độ máy, chứ không phải cấp độ kiểm thử. Nếu nó không được xuất và chia sẻ, các tập lệnh chạy thành công trên máy của bạn có thể thất bại trên máy của đồng nghiệp hoặc trên tác nhân xây dựng.
Cách sử dụng định danh thứ tự trong Descriptlập trình ive
Trong lập trình mô tả, không có hộp thoại Nhận dạng Đối tượng. Số thứ tự được ghi trực tiếp vào chuỗi mô tả, giống hệt như bất kỳ tên thuộc tính nào khác, và luôn luôn bắt đầu từ 0.
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
Đầu ra:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Một cách tiếp cận an toàn hơn là kết hợp các thuộc tính thực với ChildObjects Vì vậy, thứ tự được xác thực trước khi sử dụng. Ví dụ dưới đây giả định một trang chứa năm đối tượng WebEdit khớp nhau và chỉ số là 9.
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
Đầu ra:
Index 9 is out of range; only 5 objects match
Cơ chế bảo vệ này biến lỗi thời gian chạy "Không thể xác định đối tượng" không hữu ích thành một thông báo dễ đọc, điều này rất quan trọng khi kết quả được công bố cho một lỗi. tracker hoặc tới HP ALM tích hợp với UFT.
Những lỗi thường gặp khi sử dụng định danh thứ tự
Hầu hết các khuyết tật liên quan đến thứ tự tracQuay trở lại với một nhóm nhỏ các lỗi thường xuyên lặp lại.
- Đếm từ 1. Mỗi mã định danh thứ tự đều bắt đầu từ 0. Việc viết index:=1 cho trường đầu tiên là lỗi phổ biến nhất và gây ra lỗi lệch một đơn vị, trông giống như một vấn đề về thời gian.
- Nhầm lẫn giữa chỉ mục và vị trí. Chỉ mục (index) tuân theo mã nguồn; vị trí (location) tuân theo màn hình. Trên một trang mà CSS sắp xếp lại các phần tử, hai giá trị này khác nhau và hoán đổi vị trí cho nhau.ping Chúng âm thầm nhắm mục tiêu vào bộ điều khiển sai.
- Sử dụng CreationTime bên ngoài môi trường Web. Thuộc tính này chỉ tồn tại trên các đối tượng Browser. Áp dụng nó cho đối tượng Page, Frame hoặc Window sẽ gây ra lỗi thuộc tính không được hỗ trợ.
- Mã hóa cứng một số thứ tự vào một hàm dùng chung. Một hàm có thể tái sử dụng với giả định index:=2 sẽ trở nên không thể sử dụng được ngay khi màn hình thứ hai với bố cục khác gọi đến nó.
- Giữ lại các số thứ tự trong kho lưu trữ sau khi ứng dụng ổn định. Sau khi các nhà phát triển thêm ID ổn định, hãy xem lại các đối tượng và thay thế số thứ tự bằng thuộc tính mới.
- Dựa vào các số thứ tự bên trong các vòng lặp trên lưới. Thích hơn
ChildObjects, trả về một tập hợp dữ liệu trực tiếp, do đó số lượng hiển thị phản ánh trang hiện tại chứ không phải trang đã được ghi lại.
Trung Tâm Tài Liệu
Tải xuống các trang web được sử dụng trong hướng dẫn trên để tự thực hành.
Mã định danh thứ tự chỉ là một phần nhỏ trong mô hình nhận dạng đối tượng. Để hiểu rõ hơn về cách chúng phù hợp với quy trình làm việc tổng thể, hãy tiếp tục đọc toàn bộ bài viết. QTP/UFT chuỗi đào tạo, xem lại những kiến thức cơ bản trong kiểm thử phần mềmTìm hiểu cách quản lý kết quả trong Hướng dẫn HP ALMvà so sánh các chiến lược định vị với Selenium hướng dẫn.
Câu Hỏi Thường Gặp
Nhấp chuột đây nếu video không thể truy cập được

