Last updated:
0 purchases
appium driver
appium_driver #
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 .
copied to clipboard
format #
$ dartfmt -w --fix .
copied to clipboard
pana (analyze on pub.dev) #
$ dart pub run pana --source path .
copied to clipboard
Run tests #
Get dependencies #
$ dart pub get
copied to clipboard
Functional #
$ dart pub run test test/functional
copied to clipboard
Unit #
$ dart pub run test test/unit
copied to clipboard
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.
✅ directConnectXxxx
✅ batch command
✅ CDP command: [HttpMethod.httpPost, 'session/:session_id/goog/cdp/execute']
✅ [HttpMethod.httpGet, 'sessions']
✅ [HttpMethod.httpGet, 'session/:session_id/contexts']
✅ [HttpMethod.httpPost, 'session/:session_id/context']
✅ [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
✅ [HttpMethod.httpPost, 'session/:session_id/appium/app/background']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/app/strings']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/is_locked']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/unlock']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/lock']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/device/system_time']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/install_app']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/remove_app']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/app_installed']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/activate_app']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/terminate_app']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/app_state']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/shake']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/hide_keyboard']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/press_keycode']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/long_press_keycode']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/push_file']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/pull_file']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/pull_folder']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/get_clipboard']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/set_clipboard']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/settings']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/settings']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/device/is_keyboard_shown']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/open_notifications']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/device/start_activity']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/device/current_activity']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/device/current_package']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/device/system_bars']
✅ [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']
✅ [HttpMethod.httpGet, 'status']
✅ [HttpMethod.httpGet, 'session/:session_id/element/:id/displayed']
✅ [HttpMethod.httpGet, 'session/:session_id']
✅ [HtMethod.httpGet, 'session/:session_id/location']
✅ [HttpMethod.httpPost, 'session/:session_id/location']
✅ [HttpMethod.httpGet, 'session/:session_id/ime/available_engines']
✅ [HttpMethod.httpGet, 'session/:session_id/ime/active_engine']
✅ [HttpMethod.httpGet, 'session/:session_id/ime/activated']
✅ [HttpMethod.httpPost, 'session/:session_id/ime/deactivate']
✅ [HttpMethod.httpPost, 'session/:session_id/ime/activate']
✅ [HttpMethod.httpGet, 'session/:session_id/log/types']
✅ [HttpMethod.httpPost, 'session/:session_id/log']
✅ [HttpMethod.httpGet, 'session/:session_id/appium/events']
✅ [HttpMethod.httpPost, 'session/:session_id/appium/log_event']
✅ [HttpMethod.httpGet, 'session/:session_id/orientation']
✅ [HttpMethod.httpPost, 'session/:session_id/orientation']
✅ Add finder for https://github.com/truongsinh/appium-flutter-driver
Low priority
Below commands may not be supported since platform specific commands are supported as its own commands e.g. https://github.com/appium/appium-uiautomator2-driver?tab=readme-ov-file#platform-specific-extensions
[ ] [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.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.