Test Uiautomator

  
Khung kiểm thử chức năng trên giao diện người dùng qua nhiều ứng dụng
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 7 tháng 5 năm 2025 2.3.0 - - 2.4.0-alpha02

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên kiểm thử, bạn phải thêm kho lưu trữ Maven của Google vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha02"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 2.4

Phiên bản 2.4.0-alpha02

Ngày 7 tháng 5 năm 2025

Phát hành androidx.test.uiautomator:uiautomator:2.4.0-alpha02. Phiên bản 2.4.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Hình dạng ban đầu của API Uiautomator mới. Bạn có thể tạo UiAutomatorTestScope thông qua nhà máy uiAutomator cấp quyền truy cập vào các API onView mới.
  • Quy tắc tìm lỗi mã nguồn ban đầu để cảnh báo về việc sử dụng AccessibilityNodeInfo#getText và đề xuất sử dụng textAsString.

Thay đổi về API

  • Thêm Configurator#setDefaultDisplayId để đặt mã nhận dạng hiển thị nhằm hạn chế tất cả các lượt tìm kiếm ở (Icdf17).
  • Thay đổi Searchable (giao diện do UiDeviceUiObject2 chia sẻ) thành công khai để thuận tiện (I67f18).

Sửa lỗi

  • Khắc phục lỗi xử lý phím meta trong UiDevice#pressKeyCodes. (I73f80).
  • Cập nhật UiDevice#getWindowRoots để luôn trả về các gốc theo thứ tự Z (I87426).
  • Khắc phục vấn đề một số cử chỉ chưa hoàn tất (I60dd3, If4edd).
  • Khắc phục vòng lặp vô hạn hiếm gặp khi gọi UiDevice#scrollUntil (I39989).

Phiên bản 2.4.0-alpha01

Ngày 26 tháng 6 năm 2024

Phát hành androidx.test.uiautomator:uiautomator:2.4.0-alpha01. Phiên bản 2.4.0-alpha01 bao gồm các thay đổi sau.

Thay đổi về API

  • Ngừng sử dụng Configurator#getKeyInjectionDelaysetKeyInjectionDelay vì tham số này hiện không được sử dụng do văn bản luôn được chèn trực tiếp thay vì bằng thao tác nhấn phím. (I3bcc5).

Sửa lỗi

  • Cập nhật độ trễ giữa các sự kiện chuyển động UiObject2 để tính đến tốc độ làm mới động (tức là Màn hình mượt) (I43f12).
  • Giảm tình trạng không ổn định do nút hỗ trợ tiếp cận bị lỗi thời trên một số giao diện người dùng nhất định bằng cách định kỳ vô hiệu hoá bộ nhớ đệm hỗ trợ tiếp cận (I3be25).
  • Khắc phục StaleObjectException xảy ra khi gọi toString hoặc hashCode trên UiObject2 cũ. (I38ea1).
  • Cải thiện hiệu suất UiWatcher bằng cách bỏ qua các lệnh gọi waitForIdle không cần thiết. (I8c65e).
  • Khắc phục thông tin không chính xác trong javadoc, đặc biệt là để làm rõ thời điểm sử dụng từng tham số Configurator. (Ie10b1, I71631).

Phiên bản 2.3.0

Phiên bản 2.3.0

Ngày 21 tháng 2 năm 2024

Phát hành androidx.test.uiautomator:uiautomator:2.3.0. Phiên bản 2.3.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 2.2.0

  • Hỗ trợ nhiều màn hình: Thêm tính năng hỗ trợ tìm và thao tác trên các đối tượng trên nhiều màn hình, cũng như các phương thức UiDevice để quản lý màn hình phụ (Ie6544, I912cd).
  • Chọn mới:
    • Thêm By.displayId để chọn các đối tượng theo mã hiển thị (I1825b).
    • Thêm By.hasParentBy.hasAncestor để chọn các đối tượng theo phần tử mẹ (I93c36).
    • Thêm các phương thức By.hint để chọn đối tượng theo văn bản gợi ý (Idd345).
  • Điều kiện tuỳ chỉnh: Hiển thị giao diện Condition để hỗ trợ các điều kiện chờ tuỳ chỉnh và thêm các phương thức UiDevice#wait, UiObject2#waitUiObject2#scrollUntil tương ứng (27c0ea, 099d6e).
  • Sửa lỗi và độ tin cậy
    • Khắc phục vấn đề tính toán kích thước màn hình đôi khi không chính xác và có thể bỏ qua các phần của màn hình (Ifc016). Có thể cần điều chỉnh toạ độ và độ dời được dùng trong kiểm thử.
    • Cập nhật tính năng chèn MotionEvent để cải thiện độ chính xác (678ca3) và mô phỏng tốt hơn các cử chỉ của người dùng (454450).
    • Cải thiện độ tin cậy của thao tác cuộn (I7b059), xoay (c6cea0), nhấp và giữ (49572b), chụm (3c619a) và nhiều thao tác khác.

Phiên bản 2.3.0-rc01

Ngày 7 tháng 2 năm 2024

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-rc01 mà không có thay đổi nào. Phiên bản 2.3.0-rc01 bao gồm các thay đổi sau.

Phiên bản 2.3.0-beta01

Ngày 13 tháng 12 năm 2023

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-beta01. Phiên bản 2.3.0-beta01 bao gồm các thay đổi sau.

Thay đổi về API

  • Đổi tên các phương thức lề dựa trên tỷ lệ phần trăm UiObject2 thành setGestureMarginPercentagesetGestureMarginsPercentage để đảm bảo tính nhất quán (I24435)

Sửa lỗi

  • Cải thiện lỗi được gửi khi không tìm thấy hoặc không truy cập được màn hình phụ (116b23)

Phiên bản 2.3.0-alpha05

Ngày 1 tháng 11 năm 2023

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-alpha05. Phiên bản 2.3.0-alpha05 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm UiObject2#getDrawingOrder để hiển thị thông tin về thứ tự vẽ (chỉ mục z). (I5dfa4).
  • Thêm các phương thức UiDevice để lấy, đặt, khoá và huỷ khoá chế độ xoay của màn hình phụ. (I912cd).

Sửa lỗi

  • Thêm thử lại vào UiObject2#scrollUntil khi không phát hiện được kết thúc cuộn (Ibac6f).
  • Khắc phục vấn đề UiDevice sẽ sử dụng một thực thể Instrumentation cũ nếu thực thể đó được tạo lại (I18cae).
  • Khắc phục lỗi NPE có thể xảy ra nếu không xác định được mã hiển thị khi kết xuất nút (Icafcb).
  • Thêm cảnh báo khi thực hiện thao tác nhấp/cuộn trên các đối tượng không thể nhấp/cuộn (I4a5d9).
  • Giảm tốc độ cuộn UiObject2 mặc định để cải thiện độ tin cậy (I5e071).

Phiên bản 2.3.0-alpha04

Ngày 26 tháng 7 năm 2023

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-alpha04. Phiên bản 2.3.0-alpha04 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm By.hasParentBy.hasAncestor để hỗ trợ tìm đối tượng theo đối tượng mẹ (I93c36).
  • Thêm UiObject2#getHint để truy xuất văn bản gợi ý của đối tượng và các phương thức By.hint để chọn đối tượng theo văn bản gợi ý (Idd345).
  • Thêm By.displayId để hỗ trợ chọn đối tượng theo màn hình mà đối tượng đó đang hiển thị (I1825b).
  • Thêm các phương thức UiDevice#getDisplayHeight(int)UiDevice#getDisplayWidth(int) để tìm kích thước của màn hình theo mã nhận dạng (Ie6544).
  • Thêm lại các phương thức wait(SearchCondition, long)wait(UiObject2Condition, long) để có thể tương thích ngược (Iebfda).
  • Thay đổi UiDevice#executeShellCommand thành công khai nhưng không nên thay vì ẩn (Ic48a1).

Sửa lỗi

  • Cập nhật tính năng chèn MotionEvent để giảm tình trạng không ổn định bằng cách ưu tiên độ chính xác của cử chỉ hơn tốc độ (678ca3).
  • Thêm tính năng theo dõi vào các phương thức nặng về tài nguyên để xác định nút thắt cổ chai về hiệu suất (d17de3).
  • Thêm cơ chế thử lại khi bắt đầu kết nối UiAutomation (048caf).
  • Khắc phục lỗi NPE có thể xảy ra từ các nút rỗng trong UiDevice#dumpWindowHierarchy (b725eb).
  • Khắc phục các lỗi không mong muốn khi truy vấn hoặc thao tác trên màn hình riêng tư (985db6, 7053d4).

Phiên bản 2.3.0-alpha03

Ngày 19 tháng 4 năm 2023

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-alpha03. Phiên bản 2.3.0-alpha03 bao gồm các thay đổi sau.

Thay đổi về API

  • Hiển thị giao diện Condition để cho phép các điều kiện chờ tuỳ chỉnh thay vì chỉ dựa vào các điều kiện tích hợp sẵn trong Until, đồng thời cập nhật các phương thức UiDevice#waitUiObject2#wait để chấp nhận giao diện này (27c0ea).
  • Thêm UiObject2#scrollUntil để hỗ trợ cuộn cho đến khi đáp ứng một điều kiện và đạt được tính tương đương với UiScrollable (099d6e).
  • Thêm UiDevice#setOrientationPortraitsetOrientationLandscape để hỗ trợ việc xoay trên các loại thiết bị (e13cb7).
  • Thêm UiObject2#setGestureMarginPercent để hỗ trợ việc đặt lề tương ứng với kích thước đối tượng. (Ib8c77)

Sửa lỗi

  • Khắc phục các phương thức UiScrollable thỉnh thoảng sử dụng toạ độ không hợp lệ trên SDK 18 đến 22 (b53ece).
  • Khắc phục lỗi UiObject2#setTextclearText không sửa đổi được văn bản trên SDK 18 và 19 (77e41d).
  • Khắc phục UiWatcher không được thực thi theo đúng thứ tự (c85f92).
  • Khắc phục vấn đề xoay thiết bị có thể chưa hoàn tất sau khi thay đổi hướng UiDevice (c6cea0).
  • Cải thiện độ tin cậy của các thao tác nhấp và giữ, kéo và chụm (49572b, 3c619a).

Phiên bản 2.3.0-alpha02

Ngày 11 tháng 1 năm 2023

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-alpha02. Phiên bản 2.3.0-alpha02 bao gồm các thay đổi sau.

Các thay đổi về API

  • Cải tiến tính năng ghi nhật ký trong toàn bộ thư viện này để cung cấp thêm thông tin, cảnh báo về những vấn đề có thể xảy ra và cải thiện tính nhất quán.
  • Thêm UiDevice#pressKeyCodes để hỗ trợ nhấn đồng thời nhiều phím, ví dụ như nhấn nút POWER và VOLUME_DOWN để chụp ảnh màn hình (22e525).
  • Thêm UiDevice#setCompressedLayoutHierarchy và ngừng sử dụng UiDevice#setCompressedLayoutHeirarchy để sửa lỗi chính tả trong tên phương thức (4e2f65).
  • Đánh dấu UiAutomatorInstrumentationTestRunner là không dùng nữa vì xử lý các UiAutomatorTestCase không dùng nữa và không còn cần thiết nữa (be6c85).
  • Cập nhật độ trễ giữa UiObject2 MotionEvent để tăng gấp đôi tốc độ làm mới màn hình nhằm mô phỏng tốt hơn các cử chỉ của người dùng (454450).
  • Hỗ trợ thêm tính năng so khớp văn bản và nội dung mô tả nhiều dòng (1625e6, b/255787130).

Sửa lỗi

  • Khắc phục việc StaleObjectException đôi khi được gửi khi truy vấn hoặc chờ các đối tượng (4cbcc0).
  • Sửa các giá trị trả về của UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginningflingToEnd không cho biết liệu đã đạt đến điểm bắt đầu/kết thúc hay chưa (d33e06).
  • Sửa các phương thức UiScrollable#scrollForwardscrollBackward, bỏ qua thời gian chờ đã định cấu hình (29e4f3).
  • Sửa hàm khởi tạo bản sao BySelector không xử lý bộ chọn độ sâu (6c7b91).
  • Khắc phục việc xử lý các giá trị phần trăm không hợp lệ trong UiObject#pinchInpinchOut (01b973).
  • Sửa lỗi hiếm gặp, đó là tính năng hỗ trợ nhiều cửa sổ bị mất nếu đặt lại kết nối UiAutomation cơ bản (1bb956).

Phiên bản 2.3.0-alpha01

Ngày 7 tháng 9 năm 2022

Phát hành androidx.test.uiautomator:uiautomator:2.3.0-alpha01. Phiên bản 2.3.0-alpha01 bao gồm các thay đổi sau.

Các thay đổi về API

  • Chú thích giá trị rỗng của mọi phương thức công khai.
  • Chuyển chế độ chèn MotionEvent thành không đồng bộ theo độ trễ ngắn để các cử chỉ UiObject2 mượt mà hơn.
  • Giảm thời gian thăm dò trong khi chờ từ 1000 mili giây xuống còn 100 mili giây.
  • Cập nhật UiDevice#wakeUpUiDevice#sleep để dùng KEYCODE_WAKEUPKEYCODE_SLEEP trong việc hỗ trợ các thiết bị ghi đè nút nguồn.
  • Thêm UiObject2#getDisplayId cũng như hỗ trợ tìm và quản lý đối tượng trên nhiều màn hình.
  • Thêm phương thức UiObject#clickUiObject2#clickAndWait để nhấp vào một điểm bằng cách sử dụng các toạ độ của điểm đó.

Sửa lỗi

  • Sửa lỗi tính toán kích thước màn hình đôi khi không chính xác và có thể bỏ qua các phần của màn hình, đặc biệt là ở chế độ nhiều cửa sổ (Ifc016c).
  • Sửa tỷ lệ ảnh chụp màn hình trong UiDevice#takeScreenshot (Id80ad6).
  • Cải thiện độ tin cậy của Until.scrollFinishedUiObject2#scroll (I7b0595).
  • Sửa các cảnh báo IncorrectContextUseViolation ở chế độ nghiêm ngặt (Iffa6a0).