カテゴリー・パッケージ・リポジトリを検索

パッケージ詳細v0.9.2

appium_driver

Dart用のAppiumバインディング。webdriver.dartを継承するWebDriver W3C仕様をサポートしています。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
4800
いいね数
24
Pub ポイント
150

パッケージをインストール

flutter pub add appium_driver

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

AppiumDriver は、Android、iOS、macOS、Windows、Linux 上のモバイルアプリケーションの自動テストを可能にする Appium の Dart バインディングです。WebDriver W3C 標準をサポートし、webdriver.dart ライブラリに基づいており、ネイティブおよびハイブリッドアプリとのインタラクションに一貫したインターフェースを提供します。このパッケージを使用すると、開発者は Dart でクロスプラットフォームのテストスクリプトを記述でき、Appium の機能を活用して実機およびエミュレータでのテストが行えます。Flutter や Dart を使用するモバイル開発ワークフローにおいて、堅牢な自動化ツールが必要なチームに最適です。

用途

  • 自動化モバイルアプリテスト
  • クロスプラットフォームUIテスト
  • 実機およびエミュレータのテスト
  • CI/CDパイプラインとの統合
  • Dartにおけるテストスクリプト開発

主な機能

  • W3C WebDriver準拠
  • webdriver.dart との統合
  • Android、iOS、macOS、Windows、Linux のサポート
  • DartネイティブAPI設計
  • 堅牢なセッション管理

適している対象

  • Flutter開発者
  • モバイルQAエンジニア
  • 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 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。