appium_driver
一个用于 Dart 的 Appium 绑定。支持继承 webdriver.dart 的 WebDriver W3C 规范。
基于 webdriver.dart 的 Dart 版 Appium 客户端
以下为英文项目原文快照,最新内容请访问 GitHub。
An appium binding in Dart
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.
Take a look at functional tests
$ dartanalyzer --options analysis_options.yaml .
$ dartfmt -w --fix .
$ dart pub run pana --source path .
$ dart pub get
$ dart pub run test test/functional
$ dart pub run test test/unit
pubspec.yamldart pub publishPlease refer webdriver.dart APIshttps://pub.dev/documentation/webdriver/latest
All W3C webdriver commands are available such as find_element/s, click and send keys. Below Appium specific commands are implementing.
[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'][HttpMethod.httpPost, 'session/:session_id/appium/element/:id/value'][HttpMethod.httpPost, 'session/:session_id/appium/element/:id/replace_value'][HttpMethod.httpPost, 'session/:session_id/appium/app/launch'][HttpMethod.httpPost, 'session/:session_id/appium/app/close'][HttpMethod.httpPost, 'session/:session_id/appium/app/reset'][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']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'][HttpMethod.httpPost, 'session/:session_id/touch/multi/perform'][HttpMethod.httpPost, 'session/:session_id/appium/device/keyevent'][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'][HttpMethod.httpPost, 'session/:session_id/keys']先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗