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 26 tháng 6 năm 2024 2.3.0 - - 2.4.0-alpha01

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-alpha01"
}

Kotlin

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

Để 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

Hãy 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-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.

Các thay đổi về API

  • Đã ngừng sử dụng Configurator#getKeyInjectionDelaysetKeyInjectionDelay vì tham số này không được sử dụng vì văn bản luôn được chèn trực tiếp thay vì bằng các lần 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à Hình ảnh mượt) (I43f12).
  • Giảm tình trạng không ổn định của nút hỗ trợ tiếp cận 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).
  • Sửa lỗi StaleObjectException xảy ra khi gọi toString hoặc hashCode trên UiObject2 cũ. (I38ea1).
  • Cải thiện hiệu suất của UiWatcher bằng cách bỏ qua các lệnh gọi waitForIdle không cần thiết. (I8c65e).
  • Sửa lỗi javadoc không chính xác, đặ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: Bổ sung 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ư phương thức UiDevice để quản lý màn hình phụ (Ie6544, I912cd).
  • Bộ 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 thành phần mẹ (I93c36).
    • Thêm các phương thức By.hint để chọn các đố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 đề việc tính toán kích thước hiển thị đôi khi không chính xác và có thể bỏ qua các phần của màn hình (Ifc016). Toạ độ và độ lệch được sử dụng trong kiểm thử có thể cần phải được điều chỉnh.
    • Cập nhật tính năng chèn MotionEvent để cải thiện độ chính xác (678ca3) và mô phỏng hiệu quả hơn các cử chỉ của người dùng (454450).
    • Cải thiện độ tin cậy của tính năng cuộn (I7b059), xoay (c6cea0), lượt nhấp và giữ (49572b), ghim (3c619a), v.v.

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.

Các 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 tạo 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.

Các 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, thiết lập, cố định và huỷ cố định chế độ xoay màn hình phụ. (I912cd).

Sửa lỗi

  • Thêm lần thử lại vào UiObject2#scrollUntil khi không thể phát hiện thấy cuối cuộn (Ibac6f).
  • Khắc phục vấn đề UiDevice sử dụng phiên bản Instrumentation cũ nếu được tạo lại (I18cae).
  • Khắc phục lỗi NPE có thể có nếu không xác định được mã hiển thị khi kết xuất các nút (IcAAPb).
  • 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 được (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.

Các thay đổi về API

  • Thêm By.hasParentBy.hasAncestor để hỗ trợ tìm đối tượng theo thành phần mẹ (I93c36).
  • Thêm UiObject2#getHint để truy xuất văn bản gợi ý của một đối tượng và các phương thức By.hint để chọn các đố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 hiển thị các đối tượng đó (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ó khả năng tương thích ngược (Iebfda).
  • Thay đổi UiDevice#executeShellCommand thành công khai nhưng không khuyến khích thay vì bị ẩn (Ic48a1).

Sửa lỗi

  • Cập nhật tính năng chèn MotionEvent để giảm hiện tượng bong tróc bằng cách ưu tiên độ chính xác của cử chỉ hơn là tốc độ (678ca3).
  • Thêm tính năng theo dõi vào các phương thức nặng tài nguyên để xác định điểm tắc nghẽn về hiệu suất (d17de3).
  • Thêm cơ chế thử lại khi khởi tạo kết nối UiAutomatic (048caf).
  • Khắc phục một 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.

Các 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 tính năng 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 điều kiện và đạt được mức độ tương đương với UiScrollable (099d6e).
  • Thêm UiDevice#setOrientationPortraitsetOrientationLandscape để hỗ trợ việc xoay giữa 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

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