搜尋分類、套件與程式碼儲存庫

套件詳情v0.9.2

appium_driver

一個用於 Dart 的 Appium 繫結。支援繼承 webdriver.dart 的 WebDriver W3C 規範。

AndroidiOSmacOSWindowsLinux
近 30 天下載
4800
喜歡數
24
Pub 分數
150

安裝套件

flutter pub add appium_driver

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

AppiumDriver 是 Appium 的 Dart 繫結,可實現對 Android、iOS、macOS、Windows 和 Linux 上行動應用程式的自動化測試。它支援 WebDriver W3C 標準,並基於 webdriver.dart 庫,為與原生及混合應用程式互動提供一致的介面。此套件讓開發者能以 Dart 寫出跨平台測試腳本,利用 Appium 在實體裝置與模擬器上的測試功能。非常適合在移動開發工作流程中使用 Flutter 或 Dart 的團隊,需要強大的自動化工具。

適用情境

  • 自動化移動應用測試
  • 跨平台 UI 測試
  • 真實設備和模擬器測試
  • 與 CI/CD 流水線整合
  • Dart 中的測試腳本開發

主要特色

  • W3C WebDriver 相容性
  • 與 webdriver.dart 的整合
  • 支援 Android、iOS、macOS、Windows、Linux
  • Dart 原生 API 設計
  • 強大的會話管理

適合對象

  • Flutter 開發者
  • 移動品質保證工程師
  • CI/CD 自動化團隊
  • 基於 Dart 的測試框架
  • 跨平台測試專案

使用建議

  • 需要運行 Appium 伺服器
  • 需要正確的設備/模擬器設定
  • 僅限 WebDriver 相容動作
  • 依賴外部 Appium 伺服器
  • 可能需要為複雜場景進行額外設定

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

appium_driver

Dart CI

An appium binding in Dart

About

Flutter has flutter_driver which runs UI tests like Espresso/EarlGrey/Appium for Flutter elements. The driver is really awesome, but it can automate only flutter view. It cannot handle outside Flutter.

This client aims to be able to write test cases in Dart for Appium. It may help to write test code with the same programming language as the production code.

Example

Take a look at functional tests

Lint

$ dartanalyzer --options analysis_options.yaml .

format

$ dartfmt -w --fix .

pana (analyze on pub.dev)

$ dart pub run pana --source path .

Run tests

Get dependencies

$ dart pub get

Functional

$ dart pub run test test/functional

Unit

$ dart pub run test test/unit

release

  • Bump the version in pubspec.yaml
  • Run dart pub publish

Supported Commands

WebDriver commands

Please refer webdriver.dart APIshttps://pub.dev/documentation/webdriver/latest

  • Some W3C actions
    • https://pub.dev/documentation/webdriver/latest/webdriver.io/Mouse-class.html
    • https://github.com/google/webdriver.dart/blob/6d7943ef098d3c938b1f4da5a8590fe827f3dd80/lib/src/handler/w3c/mouse.dart
Appium actions

All W3C webdriver commands are available such as find_element/s, click and send keys. Below Appium specific commands are implementing.

  • [x] directConnectXxxx
  • [x] batch command
  • [x] CDP command: [HttpMethod.httpPost, 'session/:session_id/goog/cdp/execute']
  • [x] [HttpMethod.httpGet, 'sessions']
  • [x] [HttpMethod.httpGet, 'session/:session_id/contexts']
  • [x] [HttpMethod.httpPost, 'session/:session_id/context']
  • [x] [HttpMethod.httpGet, 'session/:session_id/context']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/element/:id/value'] Deprecated.
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/element/:id/replace_value'] Deprecated.
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/launch'] Deprecated
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/close'] Deprecated
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/reset'] Deprecated
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/background']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/strings']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/is_locked']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/unlock']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/lock']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/system_time']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/install_app']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/remove_app']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/app_installed']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/activate_app']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/terminate_app']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/app_state']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/shake']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/hide_keyboard']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/press_keycode']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/long_press_keycode']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/push_file']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/pull_file']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/pull_folder']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/get_clipboard']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/set_clipboard']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/settings']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/settings']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/is_keyboard_shown']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/open_notifications']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/device/start_activity']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/current_activity']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/current_package']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/system_bars']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/device/display_density']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/stop_recording_screen']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/start_recording_screen']
  • [x] [HttpMethod.httpGet, 'status']
  • [x] [HttpMethod.httpGet, 'session/:session_id/element/:id/displayed']
  • [x] [HttpMethod.httpGet, 'session/:session_id']
  • [x] [HtMethod.httpGet, 'session/:session_id/location']
  • [x] [HttpMethod.httpPost, 'session/:session_id/location']
  • [x] [HttpMethod.httpGet, 'session/:session_id/ime/available_engines']
  • [x] [HttpMethod.httpGet, 'session/:session_id/ime/active_engine']
  • [x] [HttpMethod.httpGet, 'session/:session_id/ime/activated']
  • [x] [HttpMethod.httpPost, 'session/:session_id/ime/deactivate']
  • [x] [HttpMethod.httpPost, 'session/:session_id/ime/activate']
  • [x] [HttpMethod.httpGet, 'session/:session_id/log/types']
  • [x] [HttpMethod.httpPost, 'session/:session_id/log']
  • [x] [HttpMethod.httpGet, 'session/:session_id/appium/events']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/log_event']
  • [x] [HttpMethod.httpGet, 'session/:session_id/orientation']
  • [x] [HttpMethod.httpPost, 'session/:session_id/orientation']
  • [x] Add finder for https://github.com/truongsinh/appium-flutter-driver

Low priority

Most of the commands below are available via extension commands, starting with mobile: in https://github.com/appium/appium-uiautomator2-driver, for example. Thus, they would not be implemented.

  • [ ] [HttpMethod.httpPost, 'session/:session_id/touch/perform'] # W3C actions should be an alternative
  • [ ] [HttpMethod.httpPost, 'session/:session_id/touch/multi/perform'] # W3C actions should be an alternative
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/keyevent'] # Only for Selendroid
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/finger_print']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/compare_images']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_airplane_mode']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_wifi']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_data']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_location_services']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/app/end_test_coverage']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/performanceData/types']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/getPerformanceData']
  • [ ] [HttpMethod.httpGet, 'session/:session_id/network_connection']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/network_connection']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/send_sms']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_call']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_signal']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_voice']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/network_speed']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/power_capacity']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/power_ac']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/simulator/touch_id']
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/simulator/toggle_touch_id_enrollment']
  • [ ] [HtMethod.httpGet, 'session/:session_id/timeouts'] <= already has
  • [ ] [HttpMethod.httpPost, 'session/:session_id/keys'] <= will be deprecated in W3C. Use W3C actions instead.

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。