Appium-Python-Client 5.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- appium/__init__.py +17 -0
- appium/common/__init__.py +17 -0
- appium/common/exceptions.py +26 -0
- appium/common/helper.py +42 -0
- appium/common/logger.py +28 -0
- appium/options/__init__.py +0 -0
- appium/options/android/__init__.py +2 -0
- appium/options/android/common/__init__.py +0 -0
- appium/options/android/common/adb/__init__.py +0 -0
- appium/options/android/common/adb/adb_exec_timeout_option.py +41 -0
- appium/options/android/common/adb/adb_port_option.py +38 -0
- appium/options/android/common/adb/allow_delay_adb_option.py +39 -0
- appium/options/android/common/adb/build_tools_version_option.py +42 -0
- appium/options/android/common/adb/clear_device_logs_on_start_option.py +40 -0
- appium/options/android/common/adb/ignore_hidden_api_policy_error_option.py +40 -0
- appium/options/android/common/adb/logcat_filter_specs_option.py +42 -0
- appium/options/android/common/adb/logcat_format_option.py +39 -0
- appium/options/android/common/adb/mock_location_app_option.py +42 -0
- appium/options/android/common/adb/remote_adb_host_option.py +39 -0
- appium/options/android/common/adb/skip_logcat_capture_option.py +40 -0
- appium/options/android/common/adb/suppress_kill_server_option.py +39 -0
- appium/options/android/common/app/__init__.py +0 -0
- appium/options/android/common/app/allow_test_packages_option.py +40 -0
- appium/options/android/common/app/android_install_timeout_option.py +43 -0
- appium/options/android/common/app/app_activity_option.py +39 -0
- appium/options/android/common/app/app_package_option.py +39 -0
- appium/options/android/common/app/app_wait_activity_option.py +40 -0
- appium/options/android/common/app/app_wait_duration_option.py +41 -0
- appium/options/android/common/app/app_wait_for_launch_option.py +41 -0
- appium/options/android/common/app/app_wait_package_option.py +40 -0
- appium/options/android/common/app/auto_grant_premissions_option.py +40 -0
- appium/options/android/common/app/enforce_app_install_option.py +40 -0
- appium/options/android/common/app/intent_action_option.py +40 -0
- appium/options/android/common/app/intent_category_option.py +40 -0
- appium/options/android/common/app/intent_flags_option.py +40 -0
- appium/options/android/common/app/optional_intent_arguments_option.py +40 -0
- appium/options/android/common/app/remote_apps_cache_limit_option.py +42 -0
- appium/options/android/common/app/uninstall_other_packages_option.py +39 -0
- appium/options/android/common/avd/__init__.py +0 -0
- appium/options/android/common/avd/avd_args_option.py +38 -0
- appium/options/android/common/avd/avd_env_option.py +38 -0
- appium/options/android/common/avd/avd_launch_timeout_option.py +41 -0
- appium/options/android/common/avd/avd_option.py +41 -0
- appium/options/android/common/avd/avd_ready_timeout_option.py +41 -0
- appium/options/android/common/avd/gps_enabled_option.py +39 -0
- appium/options/android/common/avd/network_speed_option.py +41 -0
- appium/options/android/common/context/__init__.py +0 -0
- appium/options/android/common/context/auto_webview_timeout_option.py +41 -0
- appium/options/android/common/context/chrome_logging_prefs_option.py +41 -0
- appium/options/android/common/context/chrome_options_option.py +40 -0
- appium/options/android/common/context/chromedriver_args_option.py +41 -0
- appium/options/android/common/context/chromedriver_chrome_mapping_file_option.py +43 -0
- appium/options/android/common/context/chromedriver_disable_build_check_option.py +41 -0
- appium/options/android/common/context/chromedriver_executable_dir_option.py +43 -0
- appium/options/android/common/context/chromedriver_executable_option.py +38 -0
- appium/options/android/common/context/chromedriver_port_option.py +39 -0
- appium/options/android/common/context/chromedriver_ports_option.py +39 -0
- appium/options/android/common/context/chromedriver_use_system_executable_option.py +40 -0
- appium/options/android/common/context/ensure_webviews_have_pages_option.py +40 -0
- appium/options/android/common/context/extract_chrome_android_package_from_context_name_option.py +40 -0
- appium/options/android/common/context/native_web_screenshot_option.py +40 -0
- appium/options/android/common/context/recreate_chrome_driver_sessions_option.py +41 -0
- appium/options/android/common/context/show_chromedriver_log_option.py +39 -0
- appium/options/android/common/context/webview_devtools_port_option.py +40 -0
- appium/options/android/common/localization/__init__.py +0 -0
- appium/options/android/common/localization/locale_script_option.py +40 -0
- appium/options/android/common/locking/__init__.py +0 -0
- appium/options/android/common/locking/skip_unlock_option.py +42 -0
- appium/options/android/common/locking/unlock_key_option.py +40 -0
- appium/options/android/common/locking/unlock_strategy_option.py +40 -0
- appium/options/android/common/locking/unlock_success_timeout_option.py +43 -0
- appium/options/android/common/locking/unlock_type_option.py +40 -0
- appium/options/android/common/mjpeg/__init__.py +0 -0
- appium/options/android/common/mjpeg/mjpeg_screenshot_url_option.py +40 -0
- appium/options/android/common/other/__init__.py +0 -0
- appium/options/android/common/other/disable_suppress_accessibility_service_option.py +40 -0
- appium/options/android/common/other/user_profile_option.py +42 -0
- appium/options/android/common/signing/__init__.py +0 -0
- appium/options/android/common/signing/key_alias_option.py +40 -0
- appium/options/android/common/signing/key_password_option.py +40 -0
- appium/options/android/common/signing/keystore_password_option.py +40 -0
- appium/options/android/common/signing/keystore_path_option.py +40 -0
- appium/options/android/common/signing/no_sign_option.py +42 -0
- appium/options/android/common/signing/use_keystore_option.py +42 -0
- appium/options/android/espresso/__init__.py +0 -0
- appium/options/android/espresso/activity_options_option.py +41 -0
- appium/options/android/espresso/app_locale_option.py +44 -0
- appium/options/android/espresso/base.py +221 -0
- appium/options/android/espresso/espresso_build_config_option.py +46 -0
- appium/options/android/espresso/espresso_server_launch_timeout_option.py +43 -0
- appium/options/android/espresso/force_espresso_rebuild_option.py +41 -0
- appium/options/android/espresso/intent_options_option.py +41 -0
- appium/options/android/espresso/show_gradle_log_option.py +39 -0
- appium/options/android/uiautomator2/__init__.py +0 -0
- appium/options/android/uiautomator2/base.py +221 -0
- appium/options/android/uiautomator2/disable_window_animation_option.py +40 -0
- appium/options/android/uiautomator2/mjpeg_server_port_option.py +41 -0
- appium/options/android/uiautomator2/skip_device_initialization_option.py +40 -0
- appium/options/android/uiautomator2/skip_server_installation_option.py +44 -0
- appium/options/android/uiautomator2/uiautomator2_server_install_timeout_option.py +44 -0
- appium/options/android/uiautomator2/uiautomator2_server_launch_timeout_option.py +44 -0
- appium/options/android/uiautomator2/uiautomator2_server_read_timeout_option.py +46 -0
- appium/options/common/__init__.py +1 -0
- appium/options/common/app_option.py +41 -0
- appium/options/common/auto_web_view_option.py +40 -0
- appium/options/common/automation_name_option.py +38 -0
- appium/options/common/base.py +125 -0
- appium/options/common/browser_name_option.py +38 -0
- appium/options/common/bundle_id_option.py +38 -0
- appium/options/common/clear_system_files_option.py +38 -0
- appium/options/common/device_name_option.py +38 -0
- appium/options/common/enable_performance_logging_option.py +38 -0
- appium/options/common/event_timings_option.py +40 -0
- appium/options/common/full_reset_option.py +38 -0
- appium/options/common/is_headless_option.py +39 -0
- appium/options/common/language_option.py +38 -0
- appium/options/common/locale_option.py +38 -0
- appium/options/common/new_command_timeout_option.py +41 -0
- appium/options/common/no_reset_option.py +38 -0
- appium/options/common/orientation_option.py +40 -0
- appium/options/common/other_apps_option.py +39 -0
- appium/options/common/platform_version_option.py +40 -0
- appium/options/common/postrun_option.py +39 -0
- appium/options/common/prerun_option.py +40 -0
- appium/options/common/print_page_source_on_find_failure_option.py +40 -0
- appium/options/common/skip_log_capture_option.py +38 -0
- appium/options/common/supports_capabilities.py +26 -0
- appium/options/common/system_host_option.py +38 -0
- appium/options/common/system_port_option.py +38 -0
- appium/options/common/udid_option.py +38 -0
- appium/options/flutter_integration/__init__.py +15 -0
- appium/options/flutter_integration/base.py +39 -0
- appium/options/flutter_integration/flutter_element_wait_timeout_option.py +50 -0
- appium/options/flutter_integration/flutter_enable_mock_camera_option.py +44 -0
- appium/options/flutter_integration/flutter_server_launch_timeout_option.py +51 -0
- appium/options/flutter_integration/flutter_system_port_option.py +45 -0
- appium/options/gecko/__init__.py +1 -0
- appium/options/gecko/android_storage_option.py +39 -0
- appium/options/gecko/base.py +51 -0
- appium/options/gecko/firefox_options_option.py +38 -0
- appium/options/gecko/marionette_port_option.py +43 -0
- appium/options/gecko/verbosity_option.py +40 -0
- appium/options/ios/__init__.py +2 -0
- appium/options/ios/safari/__init__.py +0 -0
- appium/options/ios/safari/automatic_inspection_option.py +41 -0
- appium/options/ios/safari/automatic_profiling_option.py +41 -0
- appium/options/ios/safari/base.py +51 -0
- appium/options/ios/safari/device_name_option.py +43 -0
- appium/options/ios/safari/device_type_option.py +41 -0
- appium/options/ios/safari/device_udid_option.py +43 -0
- appium/options/ios/safari/platform_build_version_option.py +41 -0
- appium/options/ios/safari/platform_version_option.py +41 -0
- appium/options/ios/safari/use_simulator_option.py +41 -0
- appium/options/ios/safari/webkit_webrtc_option.py +52 -0
- appium/options/ios/xcuitest/__init__.py +0 -0
- appium/options/ios/xcuitest/app/__init__.py +0 -0
- appium/options/ios/xcuitest/app/app_install_strategy_option.py +46 -0
- appium/options/ios/xcuitest/app/app_push_timeout_option.py +42 -0
- appium/options/ios/xcuitest/app/localizable_strings_dir_option.py +39 -0
- appium/options/ios/xcuitest/base.py +223 -0
- appium/options/ios/xcuitest/general/__init__.py +0 -0
- appium/options/ios/xcuitest/general/include_device_caps_to_session_info_option.py +41 -0
- appium/options/ios/xcuitest/general/reset_location_service_option.py +39 -0
- appium/options/ios/xcuitest/other/__init__.py +0 -0
- appium/options/ios/xcuitest/other/command_timeouts_option.py +57 -0
- appium/options/ios/xcuitest/other/launch_with_idb_option.py +42 -0
- appium/options/ios/xcuitest/other/show_ios_log_option.py +39 -0
- appium/options/ios/xcuitest/other/use_json_source_option.py +39 -0
- appium/options/ios/xcuitest/simulator/__init__.py +0 -0
- appium/options/ios/xcuitest/simulator/calendar_access_authorized_option.py +41 -0
- appium/options/ios/xcuitest/simulator/calendar_format_option.py +38 -0
- appium/options/ios/xcuitest/simulator/connect_hardware_keyboard_option.py +43 -0
- appium/options/ios/xcuitest/simulator/custom_ssl_cert_option.py +39 -0
- appium/options/ios/xcuitest/simulator/enforce_fresh_simulator_creation_option.py +39 -0
- appium/options/ios/xcuitest/simulator/force_simulator_software_keyboard_presence_option.py +45 -0
- appium/options/ios/xcuitest/simulator/ios_simulator_logs_predicate_option.py +38 -0
- appium/options/ios/xcuitest/simulator/keep_key_chains_option.py +39 -0
- appium/options/ios/xcuitest/simulator/keychains_exclude_patterns_option.py +44 -0
- appium/options/ios/xcuitest/simulator/permissions_option.py +50 -0
- appium/options/ios/xcuitest/simulator/reduce_motion_option.py +40 -0
- appium/options/ios/xcuitest/simulator/reset_on_session_start_only_option.py +41 -0
- appium/options/ios/xcuitest/simulator/scale_factor_option.py +44 -0
- appium/options/ios/xcuitest/simulator/shutdown_other_simulators_option.py +44 -0
- appium/options/ios/xcuitest/simulator/simulator_devices_set_path_option.py +41 -0
- appium/options/ios/xcuitest/simulator/simulator_pasteboard_automatic_sync_option.py +42 -0
- appium/options/ios/xcuitest/simulator/simulator_startup_timeout_option.py +46 -0
- appium/options/ios/xcuitest/simulator/simulator_trace_pointer_option.py +41 -0
- appium/options/ios/xcuitest/simulator/simulator_window_center_option.py +41 -0
- appium/options/ios/xcuitest/wda/__init__.py +0 -0
- appium/options/ios/xcuitest/wda/allow_provisioning_device_regitration_option.py +40 -0
- appium/options/ios/xcuitest/wda/auto_accept_alerts_option.py +39 -0
- appium/options/ios/xcuitest/wda/auto_disimiss_alerts_option.py +39 -0
- appium/options/ios/xcuitest/wda/derived_data_path_option.py +41 -0
- appium/options/ios/xcuitest/wda/disable_automatic_screenshots_option.py +40 -0
- appium/options/ios/xcuitest/wda/force_app_launch_option.py +42 -0
- appium/options/ios/xcuitest/wda/keychain_password_option.py +39 -0
- appium/options/ios/xcuitest/wda/keychain_path_option.py +39 -0
- appium/options/ios/xcuitest/wda/max_typing_frequency_option.py +40 -0
- appium/options/ios/xcuitest/wda/mjpeg_server_port_option.py +42 -0
- appium/options/ios/xcuitest/wda/process_arguments_option.py +42 -0
- appium/options/ios/xcuitest/wda/result_bundle_path_option.py +42 -0
- appium/options/ios/xcuitest/wda/screenshot_quality_option.py +42 -0
- appium/options/ios/xcuitest/wda/should_terminate_app_option.py +42 -0
- appium/options/ios/xcuitest/wda/should_use_singleton_test_manager_option.py +39 -0
- appium/options/ios/xcuitest/wda/show_xcode_log_option.py +40 -0
- appium/options/ios/xcuitest/wda/simple_is_visible_check_option.py +42 -0
- appium/options/ios/xcuitest/wda/updated_wda_bundle_id_option.py +39 -0
- appium/options/ios/xcuitest/wda/use_native_caching_strategy_option.py +41 -0
- appium/options/ios/xcuitest/wda/use_new_wda_option.py +51 -0
- appium/options/ios/xcuitest/wda/use_prebuilt_wda_option.py +39 -0
- appium/options/ios/xcuitest/wda/use_simple_build_test_option.py +40 -0
- appium/options/ios/xcuitest/wda/use_xctestrun_file_option.py +49 -0
- appium/options/ios/xcuitest/wda/wait_for_idle_timeout_option.py +45 -0
- appium/options/ios/xcuitest/wda/wait_for_quiescence_option.py +42 -0
- appium/options/ios/xcuitest/wda/wda_base_url_option.py +41 -0
- appium/options/ios/xcuitest/wda/wda_connection_timeout_option.py +43 -0
- appium/options/ios/xcuitest/wda/wda_eventloop_idle_delay_option.py +46 -0
- appium/options/ios/xcuitest/wda/wda_launch_timeout_option.py +41 -0
- appium/options/ios/xcuitest/wda/wda_local_port_option.py +41 -0
- appium/options/ios/xcuitest/wda/wda_startup_retries_option.py +39 -0
- appium/options/ios/xcuitest/wda/wda_startup_retry_interval_option.py +43 -0
- appium/options/ios/xcuitest/wda/web_driver_agent_url_option.py +39 -0
- appium/options/ios/xcuitest/wda/xcode_org_id_option.py +39 -0
- appium/options/ios/xcuitest/wda/xcode_signing_id_option.py +39 -0
- appium/options/ios/xcuitest/webview/__init__.py +0 -0
- appium/options/ios/xcuitest/webview/absolute_web_locations_option.py +42 -0
- appium/options/ios/xcuitest/webview/additional_webview_bundle_ids_option.py +40 -0
- appium/options/ios/xcuitest/webview/enable_async_execute_from_https_option.py +39 -0
- appium/options/ios/xcuitest/webview/full_context_list_option.py +42 -0
- appium/options/ios/xcuitest/webview/include_safari_in_webviews_option.py +41 -0
- appium/options/ios/xcuitest/webview/native_web_tap_option.py +40 -0
- appium/options/ios/xcuitest/webview/safari_garbage_collect_option.py +39 -0
- appium/options/ios/xcuitest/webview/safari_ignore_fraud_warning_option.py +39 -0
- appium/options/ios/xcuitest/webview/safari_ignore_web_hostnames_option.py +42 -0
- appium/options/ios/xcuitest/webview/safari_initial_url_option.py +38 -0
- appium/options/ios/xcuitest/webview/safari_log_all_communication_hex_dump_option.py +43 -0
- appium/options/ios/xcuitest/webview/safari_log_all_communication_option.py +40 -0
- appium/options/ios/xcuitest/webview/safari_open_links_in_background_option.py +39 -0
- appium/options/ios/xcuitest/webview/safari_socket_chunk_size_option.py +41 -0
- appium/options/ios/xcuitest/webview/safari_web_inspector_max_frame_length_option.py +41 -0
- appium/options/ios/xcuitest/webview/webkit_response_timeout_option.py +43 -0
- appium/options/ios/xcuitest/webview/webview_connect_retries_option.py +40 -0
- appium/options/ios/xcuitest/webview/webview_connect_timeout_option.py +43 -0
- appium/options/mac/__init__.py +1 -0
- appium/options/mac/mac2/__init__.py +0 -0
- appium/options/mac/mac2/app_path_option.py +39 -0
- appium/options/mac/mac2/arguments_option.py +39 -0
- appium/options/mac/mac2/base.py +113 -0
- appium/options/mac/mac2/bootstrap_root_option.py +41 -0
- appium/options/mac/mac2/environment_option.py +41 -0
- appium/options/mac/mac2/server_startup_timeout_option.py +44 -0
- appium/options/mac/mac2/show_server_logs_option.py +39 -0
- appium/options/mac/mac2/skip_app_kill_option.py +40 -0
- appium/options/mac/mac2/web_driver_agent_mac_url_option.py +39 -0
- appium/options/windows/__init__.py +1 -0
- appium/options/windows/windows/__init__.py +0 -0
- appium/options/windows/windows/app_arguments_option.py +40 -0
- appium/options/windows/windows/app_top_level_window_option.py +40 -0
- appium/options/windows/windows/app_working_dir_option.py +40 -0
- appium/options/windows/windows/base.py +97 -0
- appium/options/windows/windows/create_session_timeout_option.py +45 -0
- appium/options/windows/windows/expreimental_web_driver_option.py +39 -0
- appium/options/windows/windows/wait_for_app_launch_option.py +43 -0
- appium/protocols/__init__.py +13 -0
- appium/protocols/webdriver/__init__.py +13 -0
- appium/protocols/webdriver/can_execute_commands.py +23 -0
- appium/protocols/webdriver/can_execute_scripts.py +27 -0
- appium/protocols/webdriver/can_find_elements.py +32 -0
- appium/protocols/webdriver/can_remember_extension_presence.py +23 -0
- appium/py.typed +0 -0
- appium/version.py +22 -0
- appium/webdriver/__init__.py +20 -0
- appium/webdriver/appium_connection.py +65 -0
- appium/webdriver/appium_service.py +330 -0
- appium/webdriver/applicationstate.py +21 -0
- appium/webdriver/client_config.py +38 -0
- appium/webdriver/clipboard_content_type.py +19 -0
- appium/webdriver/command_method.py +27 -0
- appium/webdriver/common/__init__.py +17 -0
- appium/webdriver/common/appiumby.py +54 -0
- appium/webdriver/connectiontype.py +42 -0
- appium/webdriver/errorhandler.py +125 -0
- appium/webdriver/extensions/__init__.py +13 -0
- appium/webdriver/extensions/action_helpers.py +188 -0
- appium/webdriver/extensions/android/__init__.py +0 -0
- appium/webdriver/extensions/android/activities.py +65 -0
- appium/webdriver/extensions/android/common.py +59 -0
- appium/webdriver/extensions/android/display.py +48 -0
- appium/webdriver/extensions/android/gsm.py +147 -0
- appium/webdriver/extensions/android/nativekey.py +1119 -0
- appium/webdriver/extensions/android/network.py +175 -0
- appium/webdriver/extensions/android/performance.py +85 -0
- appium/webdriver/extensions/android/power.py +80 -0
- appium/webdriver/extensions/android/sms.py +50 -0
- appium/webdriver/extensions/android/system_bars.py +58 -0
- appium/webdriver/extensions/applications.py +274 -0
- appium/webdriver/extensions/clipboard.py +107 -0
- appium/webdriver/extensions/context.py +63 -0
- appium/webdriver/extensions/device_time.py +75 -0
- appium/webdriver/extensions/execute_driver.py +60 -0
- appium/webdriver/extensions/execute_mobile_command.py +62 -0
- appium/webdriver/extensions/flutter_integration/__init__.py +13 -0
- appium/webdriver/extensions/flutter_integration/flutter_commands.py +296 -0
- appium/webdriver/extensions/flutter_integration/flutter_finder.py +55 -0
- appium/webdriver/extensions/flutter_integration/scroll_directions.py +6 -0
- appium/webdriver/extensions/hw_actions.py +149 -0
- appium/webdriver/extensions/images_comparison.py +132 -0
- appium/webdriver/extensions/keyboard.py +168 -0
- appium/webdriver/extensions/location.py +98 -0
- appium/webdriver/extensions/log_event.py +68 -0
- appium/webdriver/extensions/logs.py +53 -0
- appium/webdriver/extensions/remote_fs.py +110 -0
- appium/webdriver/extensions/screen_record.py +207 -0
- appium/webdriver/extensions/session.py +41 -0
- appium/webdriver/extensions/settings.py +49 -0
- appium/webdriver/locator_converter.py +29 -0
- appium/webdriver/mobilecommand.py +104 -0
- appium/webdriver/switch_to.py +35 -0
- appium/webdriver/webdriver.py +495 -0
- appium/webdriver/webelement.py +130 -0
- appium_python_client-5.2.0.dist-info/METADATA +573 -0
- appium_python_client-5.2.0.dist-info/RECORD +324 -0
- appium_python_client-5.2.0.dist-info/WHEEL +4 -0
- appium_python_client-5.2.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from datetime import timedelta
|
|
19
|
+
from typing import Optional, Union
|
|
20
|
+
|
|
21
|
+
from appium.options.common.supports_capabilities import SupportsCapabilities
|
|
22
|
+
|
|
23
|
+
UIAUTOMATOR2_SERVER_READ_TIMEOUT = 'uiautomator2ServerReadTimeout'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Uiautomator2ServerReadTimeoutOption(SupportsCapabilities):
|
|
27
|
+
@property
|
|
28
|
+
def uiautomator2_server_read_timeout(self) -> Optional[timedelta]:
|
|
29
|
+
"""
|
|
30
|
+
Maximum timeout to wait for an HTTP response from UiAutomator2Server.
|
|
31
|
+
"""
|
|
32
|
+
value = self.get_capability(UIAUTOMATOR2_SERVER_READ_TIMEOUT)
|
|
33
|
+
return None if value is None else timedelta(milliseconds=value)
|
|
34
|
+
|
|
35
|
+
@uiautomator2_server_read_timeout.setter
|
|
36
|
+
def uiautomator2_server_read_timeout(self, value: Union[timedelta, int]) -> None:
|
|
37
|
+
"""
|
|
38
|
+
Set the maximum timeout to wait for a HTTP response from UiAutomator2Server.
|
|
39
|
+
Only values greater than zero are accepted. If the given value is too low
|
|
40
|
+
then expect driver commands to fail with timeout of Xms exceeded error.
|
|
41
|
+
240000 ms by default
|
|
42
|
+
"""
|
|
43
|
+
self.set_capability(
|
|
44
|
+
UIAUTOMATOR2_SERVER_READ_TIMEOUT,
|
|
45
|
+
int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value,
|
|
46
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .base import AppiumOptions
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
APP = 'app'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class AppOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def app(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
String representing app location.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(APP)
|
|
32
|
+
|
|
33
|
+
@app.setter
|
|
34
|
+
def app(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set the absolute local path for the location of the App.
|
|
37
|
+
The app must be located on the same machine where Appium
|
|
38
|
+
server is running.
|
|
39
|
+
Could also be a valid URL.
|
|
40
|
+
"""
|
|
41
|
+
self.set_capability(APP, value)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
AUTO_WEB_VIEW = 'autoWebView'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class AutoWebViewOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def auto_web_view(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether the driver should try to automatically switch
|
|
30
|
+
to a web view context after the session is started.
|
|
31
|
+
"""
|
|
32
|
+
return self.get_capability(AUTO_WEB_VIEW)
|
|
33
|
+
|
|
34
|
+
@auto_web_view.setter
|
|
35
|
+
def auto_web_view(self, value: bool) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Set whether the driver should try to automatically switch
|
|
38
|
+
a web view context after the session is started.
|
|
39
|
+
"""
|
|
40
|
+
self.set_capability(AUTO_WEB_VIEW, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
AUTOMATION_NAME = 'automationName'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class AutomationNameOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def automation_name(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
String representing the name of the automation engine name.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(AUTOMATION_NAME)
|
|
32
|
+
|
|
33
|
+
@automation_name.setter
|
|
34
|
+
def automation_name(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set the automation driver name to use for the given platform.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(AUTOMATION_NAME, value)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
import copy
|
|
19
|
+
from typing import Any, Dict, TypeVar
|
|
20
|
+
|
|
21
|
+
from selenium.webdriver.common.options import BaseOptions
|
|
22
|
+
|
|
23
|
+
from .automation_name_option import AutomationNameOption
|
|
24
|
+
from .browser_name_option import BROWSER_NAME, BrowserNameOption
|
|
25
|
+
from .event_timings_option import EventTimingsOption
|
|
26
|
+
from .full_reset_option import FullResetOption
|
|
27
|
+
from .new_command_timeout_option import NewCommandTimeoutOption
|
|
28
|
+
from .no_reset_option import NoResetOption
|
|
29
|
+
from .print_page_source_on_find_failure_option import PrintPageSourceOnFindFailureOption
|
|
30
|
+
|
|
31
|
+
APPIUM_PREFIX = 'appium:'
|
|
32
|
+
T = TypeVar('T', bound='AppiumOptions')
|
|
33
|
+
PLATFORM_NAME = 'platformName'
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class AppiumOptions(
|
|
37
|
+
BaseOptions,
|
|
38
|
+
BrowserNameOption,
|
|
39
|
+
AutomationNameOption,
|
|
40
|
+
EventTimingsOption,
|
|
41
|
+
PrintPageSourceOnFindFailureOption,
|
|
42
|
+
NoResetOption,
|
|
43
|
+
FullResetOption,
|
|
44
|
+
NewCommandTimeoutOption,
|
|
45
|
+
):
|
|
46
|
+
_caps: Dict
|
|
47
|
+
W3C_CAPABILITY_NAMES = frozenset(
|
|
48
|
+
[
|
|
49
|
+
'acceptInsecureCerts',
|
|
50
|
+
BROWSER_NAME,
|
|
51
|
+
'browserVersion',
|
|
52
|
+
PLATFORM_NAME,
|
|
53
|
+
'pageLoadStrategy',
|
|
54
|
+
'proxy',
|
|
55
|
+
'setWindowRect',
|
|
56
|
+
'timeouts',
|
|
57
|
+
'unhandledPromptBehavior',
|
|
58
|
+
]
|
|
59
|
+
)
|
|
60
|
+
_OSS_W3C_CONVERSION = {
|
|
61
|
+
'acceptSslCerts': 'acceptInsecureCerts',
|
|
62
|
+
'version': 'browserVersion',
|
|
63
|
+
'platform': PLATFORM_NAME,
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# noinspection PyMissingConstructor
|
|
67
|
+
def __init__(self) -> None:
|
|
68
|
+
self._caps = self.default_capabilities
|
|
69
|
+
# FIXME: https://github.com/SeleniumHQ/selenium/issues/10755
|
|
70
|
+
self._ignore_local_proxy = False
|
|
71
|
+
|
|
72
|
+
def set_capability(self: T, name: str, value: Any) -> T: # type: ignore[override]
|
|
73
|
+
w3c_name = name if name in self.W3C_CAPABILITY_NAMES or ':' in name else f'{APPIUM_PREFIX}{name}'
|
|
74
|
+
if value is None:
|
|
75
|
+
if w3c_name in self._caps:
|
|
76
|
+
del self._caps[w3c_name]
|
|
77
|
+
else:
|
|
78
|
+
self._caps[w3c_name] = value
|
|
79
|
+
return self
|
|
80
|
+
|
|
81
|
+
def get_capability(self, name: str) -> Any:
|
|
82
|
+
"""Fetches capability value or None if the capability is not set"""
|
|
83
|
+
return self._caps[name] if name in self._caps else self._caps.get(f'{APPIUM_PREFIX}{name}')
|
|
84
|
+
|
|
85
|
+
def load_capabilities(self: T, caps: Dict[str, Any]) -> T:
|
|
86
|
+
"""Sets multiple capabilities"""
|
|
87
|
+
for name, value in caps.items():
|
|
88
|
+
self.set_capability(name, value)
|
|
89
|
+
return self
|
|
90
|
+
|
|
91
|
+
@staticmethod
|
|
92
|
+
def as_w3c(capabilities: Dict) -> Dict:
|
|
93
|
+
"""
|
|
94
|
+
Formats given capabilities to a valid W3C session request object
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
capabilities: Capabilities mapping
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
W3C session request object
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
def process_key(k: str) -> str:
|
|
104
|
+
key = AppiumOptions._OSS_W3C_CONVERSION.get(k, k)
|
|
105
|
+
if key in AppiumOptions.W3C_CAPABILITY_NAMES:
|
|
106
|
+
return key
|
|
107
|
+
return key if ':' in key else f'{APPIUM_PREFIX}{key}'
|
|
108
|
+
|
|
109
|
+
processed_caps = {process_key(k): v for k, v in copy.deepcopy(capabilities).items()}
|
|
110
|
+
return {'capabilities': {'firstMatch': [{}], 'alwaysMatch': processed_caps}}
|
|
111
|
+
|
|
112
|
+
def to_w3c(self) -> Dict:
|
|
113
|
+
"""
|
|
114
|
+
Formats the instance to a valid W3C session request object
|
|
115
|
+
|
|
116
|
+
:return: W3C session request object
|
|
117
|
+
"""
|
|
118
|
+
return self.as_w3c(self.to_capabilities())
|
|
119
|
+
|
|
120
|
+
def to_capabilities(self) -> Dict:
|
|
121
|
+
return copy.copy(self._caps)
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def default_capabilities(self) -> Dict:
|
|
125
|
+
return {}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
BROWSER_NAME = 'browserName'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BrowserNameOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def browser_name(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
The name of the browser to run the test on.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(BROWSER_NAME)
|
|
32
|
+
|
|
33
|
+
@browser_name.setter
|
|
34
|
+
def browser_name(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set the name of the browser to run the test on.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(BROWSER_NAME, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from appium.options.common.supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
BUNDLE_ID = 'bundleId'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BundleIdOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def bundle_id(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
The bundle identifier of the application to automate.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(BUNDLE_ID)
|
|
32
|
+
|
|
33
|
+
@bundle_id.setter
|
|
34
|
+
def bundle_id(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set the bundle identifier of the application to automate.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(BUNDLE_ID, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
CLEAR_SYSTEM_FILES = 'clearSystemFiles'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ClearSystemFilesOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def clear_system_files(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether the driver should delete generated files at the end of a session.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(CLEAR_SYSTEM_FILES)
|
|
32
|
+
|
|
33
|
+
@clear_system_files.setter
|
|
34
|
+
def clear_system_files(self, value: bool) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set whether the driver should delete generated files at the end of a session.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(CLEAR_SYSTEM_FILES, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
DEVICE_NAME = 'deviceName'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class DeviceNameOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def device_name(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
The name of the device.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(DEVICE_NAME)
|
|
32
|
+
|
|
33
|
+
@device_name.setter
|
|
34
|
+
def device_name(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set the name of the device to be used in the test.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(DEVICE_NAME, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
ENABLE_PERFORMANCE_LOGGING = 'enablePerformanceLogging'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class EnablePerformanceLoggingOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def enable_performance_logging(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether to enable additional performance logging.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(ENABLE_PERFORMANCE_LOGGING)
|
|
32
|
+
|
|
33
|
+
@enable_performance_logging.setter
|
|
34
|
+
def enable_performance_logging(self, value: bool) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set whether to enable additional performance logging.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(ENABLE_PERFORMANCE_LOGGING, value)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
EVENT_TIMINGS = 'eventTimings'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class EventTimingsOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def event_timings(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether the driver should to report the timings
|
|
30
|
+
for various Appium-internal events.
|
|
31
|
+
"""
|
|
32
|
+
return self.get_capability(EVENT_TIMINGS)
|
|
33
|
+
|
|
34
|
+
@event_timings.setter
|
|
35
|
+
def event_timings(self, value: bool) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Set whether the driver should to report the timings
|
|
38
|
+
for various Appium-internal events.
|
|
39
|
+
"""
|
|
40
|
+
self.set_capability(EVENT_TIMINGS, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
FULL_RESET = 'fullReset'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class FullResetOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def full_reset(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether the driver should perform a full reset.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(FULL_RESET)
|
|
32
|
+
|
|
33
|
+
@full_reset.setter
|
|
34
|
+
def full_reset(self, value: bool) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set whether the driver should perform a full reset.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(FULL_RESET, value)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
IS_HEADLESS = 'isHeadless'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class IsHeadlessOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def is_headless(self) -> Optional[bool]:
|
|
28
|
+
"""
|
|
29
|
+
Whether the driver should start emulator/simulator in headless mode.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(IS_HEADLESS)
|
|
32
|
+
|
|
33
|
+
@is_headless.setter
|
|
34
|
+
def is_headless(self, value: bool) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set emulator/simulator to start in headless mode (e.g. no UI is shown).
|
|
37
|
+
It is only applied if the emulator is not running before the test starts.
|
|
38
|
+
"""
|
|
39
|
+
self.set_capability(IS_HEADLESS, value)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The SFC licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from .supports_capabilities import SupportsCapabilities
|
|
21
|
+
|
|
22
|
+
LANGUAGE = 'language'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class LanguageOption(SupportsCapabilities):
|
|
26
|
+
@property
|
|
27
|
+
def language(self) -> Optional[str]:
|
|
28
|
+
"""
|
|
29
|
+
Language abbreviation to use in a test session.
|
|
30
|
+
"""
|
|
31
|
+
return self.get_capability(LANGUAGE)
|
|
32
|
+
|
|
33
|
+
@language.setter
|
|
34
|
+
def language(self, value: str) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Set language abbreviation to use in a test session.
|
|
37
|
+
"""
|
|
38
|
+
self.set_capability(LANGUAGE, value)
|