Appium-Python-Client 2.10.1__tar.gz → 2.11.0__tar.gz
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-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/PKG-INFO +117 -35
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/PKG-INFO +117 -35
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/README.md +114 -34
- Appium-Python-Client-2.11.0/appium/version.py +1 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/appium_connection.py +5 -1
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/mobilecommand.py +0 -1
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/webdriver.py +25 -7
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/webelement.py +0 -12
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/setup.py +2 -0
- Appium-Python-Client-2.10.1/appium/version.py +0 -1
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/SOURCES.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/dependency_links.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/requires.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/top_level.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/LICENSE +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/MANIFEST.in +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/common/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/common/exceptions.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/common/helper.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/common/logger.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/adb_exec_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/adb_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/allow_delay_adb_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/build_tools_version_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/clear_device_logs_on_start_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/ignore_hidden_api_policy_error_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/logcat_filter_specs_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/logcat_format_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/mock_location_app_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/remote_adb_host_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/skip_logcat_capture_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/adb/suppress_kill_server_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/allow_test_packages_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/android_install_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_activity_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_package_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_wait_activity_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_wait_duration_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_wait_for_launch_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/app_wait_package_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/auto_grant_premissions_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/enforce_app_install_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/intent_action_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/intent_category_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/intent_flags_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/optional_intent_arguments_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/remote_apps_cache_limit_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/app/uninstall_other_packages_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/avd_args_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/avd_env_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/avd_launch_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/avd_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/avd_ready_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/gps_enabled_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/avd/network_speed_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/auto_webview_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chrome_logging_prefs_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chrome_options_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_args_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_chrome_mapping_file_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_disable_build_check_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_executable_dir_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_executable_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_ports_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/chromedriver_use_system_executable_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/ensure_webviews_have_pages_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/extract_chrome_android_package_from_context_name_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/native_web_screenshot_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/recreate_chrome_driver_sessions_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/show_chromedriver_log_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/context/webview_devtools_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/localization/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/localization/locale_script_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/skip_unlock_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/unlock_key_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/unlock_strategy_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/unlock_success_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/locking/unlock_type_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/mjpeg/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/mjpeg/mjpeg_screenshot_url_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/other/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/other/disable_suppress_accessibility_service_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/other/user_profile_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/key_alias_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/key_password_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/keystore_password_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/keystore_path_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/no_sign_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/common/signing/use_keystore_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/activity_options_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/app_locale_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/espresso_build_config_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/espresso_server_launch_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/force_espresso_rebuild_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/intent_options_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/espresso/show_gradle_log_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/disable_window_animation_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/mjpeg_server_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/skip_device_initialization_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/skip_server_installation_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/uiautomator2_server_install_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/uiautomator2_server_launch_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/android/uiautomator2/uiautomator2_server_read_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/app_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/auto_web_view_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/automation_name_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/bundle_id_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/clear_system_files_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/device_name_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/enable_performance_logging_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/event_timings_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/full_reset_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/is_headless_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/language_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/locale_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/new_command_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/no_reset_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/orientation_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/other_apps_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/postrun_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/prerun_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/print_page_source_on_find_failure_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/skip_log_capture_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/supports_capabilities.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/system_host_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/system_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/common/udid_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/android_storage_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/firefox_options_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/marionette_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/gecko/verbosity_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/automatic_inspection_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/automatic_profiling_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/device_name_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/device_type_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/device_udid_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/platform_build_version_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/platform_version_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/use_simulator_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/safari/webkit_webrtc_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/app/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/app/app_install_strategy_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/app/app_push_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/app/localizable_strings_dir_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/general/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/general/include_device_caps_to_session_info_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/general/reset_location_service_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/other/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/other/command_timeouts_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/other/launch_with_idb_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/other/show_ios_log_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/other/use_json_source_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/calendar_access_authorized_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/calendar_format_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/connect_hardware_keyboard_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/custom_ssl_cert_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/enforce_fresh_simulator_creation_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/force_simulator_software_keyboard_presence_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/ios_simulator_logs_predicate_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/keep_key_chains_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/keychains_exclude_patterns_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/permissions_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/reduce_motion_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/reset_on_session_start_only_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/scale_factor_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/shutdown_other_simulators_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/simulator_devices_set_path_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/simulator_pasteboard_automatic_sync_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/simulator_startup_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/simulator_trace_pointer_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/simulator/simulator_window_center_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/allow_provisioning_device_regitration_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/auto_accept_alerts_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/auto_disimiss_alerts_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/derived_data_path_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/disable_automatic_screenshots_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/force_app_launch_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/keychain_password_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/keychain_path_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/max_typing_frequency_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/mjpeg_server_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/process_arguments_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/result_bundle_path_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/screenshot_quality_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/should_terminate_app_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/should_use_singleton_test_manager_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/show_xcode_log_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/simple_is_visible_check_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/updated_wda_bundle_id_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/use_native_caching_strategy_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/use_new_wda_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/use_prebuilt_wda_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/use_simple_build_test_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/use_xctestrun_file_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wait_for_idle_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wait_for_quiescence_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_base_url_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_connection_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_eventloop_idle_delay_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_launch_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_local_port_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_startup_retries_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/wda_startup_retry_interval_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/web_driver_agent_url_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/xcode_org_id_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/wda/xcode_signing_id_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/absolute_web_locations_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/additional_webview_bundle_ids_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/enable_async_execute_from_https_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/full_context_list_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/include_safari_in_webviews_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/native_web_tap_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_garbage_collect_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_ignore_fraud_warning_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_ignore_web_hostnames_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_initial_url_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_log_all_communication_hex_dump_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_log_all_communication_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_open_links_in_background_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_socket_chunk_size_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/safari_web_inspector_max_frame_length_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/webkit_response_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/webview_connect_retries_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/ios/xcuitest/webview/webview_connect_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/arguments_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/bootstrap_root_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/environment_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/server_startup_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/show_server_logs_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/skip_app_kill_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/mac/mac2/web_driver_agent_mac_url_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/app_arguments_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/app_top_level_window_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/app_working_dir_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/base.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/create_session_timeout_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/expreimental_web_driver_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/options/windows/windows/wait_for_app_launch_option.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/protocol.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/webdriver/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/webdriver/can_execute_commands.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/webdriver/can_execute_scripts.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/webdriver/can_find_elements.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/protocols/webdriver/can_remember_extension_presence.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/py.typed +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/appium_service.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/applicationstate.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/clipboard_content_type.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/command_method.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/common/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/common/appiumby.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/common/mobileby.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/common/multi_action.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/common/touch_action.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/connectiontype.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/errorhandler.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/action_helpers.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/__init__.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/activities.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/common.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/display.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/gsm.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/nativekey.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/network.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/performance.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/power.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/sms.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/android/system_bars.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/applications.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/clipboard.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/context.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/device_time.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/execute_driver.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/execute_mobile_command.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/hw_actions.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/images_comparison.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/ime.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/keyboard.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/location.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/log_event.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/remote_fs.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/screen_record.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/session.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/extensions/settings.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/switch_to.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/.DS_Store +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/Makefile +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/README.md +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.common.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.webdriver.common.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.webdriver.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.webdriver.extensions.android.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.webdriver.extensions.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/appium.webdriver.extensions.search_context.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/environment.pickle +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/doctrees/index.doctree +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/.buildinfo +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/.nojekyll +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.common.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.webdriver.common.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.webdriver.extensions.android.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.webdriver.extensions.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.webdriver.extensions.search_context.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/appium.webdriver.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_sources/index.rst.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/basic.css +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/badge_only.css +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/css/theme.css +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/doctools.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/documentation_options.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/file.png +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/jquery-3.5.1.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/jquery.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/js/badge_only.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/js/html5shiv.min.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/js/theme.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/language_data.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/minus.png +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/plus.png +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/pygments.css +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/searchtools.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/underscore-1.13.1.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/_static/underscore.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.common.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.webdriver.common.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.webdriver.extensions.android.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.webdriver.extensions.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.webdriver.extensions.search_context.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/appium.webdriver.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/genindex.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/index.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/objects.inv +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/py-modindex.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/search.html +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/_build/html/searchindex.js +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/conf.py +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/generate.sh +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/index.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/make.bat +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/requirements.txt +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/webdriver.common.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/webdriver.extensions.android.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/webdriver.extensions.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/webdriver.extensions.search_context.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/docs/webdriver.rst +0 -0
- {Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/setup.cfg +0 -0
{Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/Appium_Python_Client.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: Appium-Python-Client
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.11.0
|
|
4
4
|
Summary: Python client for Appium
|
|
5
5
|
Home-page: http://appium.io/
|
|
6
6
|
Author: Isaac Murchie
|
|
@@ -14,6 +14,8 @@ Classifier: Programming Language :: Python
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.7
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.8
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
19
|
Classifier: Environment :: Console
|
|
18
20
|
Classifier: Environment :: MacOS X
|
|
19
21
|
Classifier: Environment :: Win32 (MS Windows)
|
|
@@ -112,6 +114,23 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
|
|
|
112
114
|
python setup.py install
|
|
113
115
|
```
|
|
114
116
|
|
|
117
|
+
## Compatibility Matrix
|
|
118
|
+
|
|
119
|
+
|Appium Python Client| Selenium binding|
|
|
120
|
+
|----|----|
|
|
121
|
+
|`2.10.0`+ |`4.1.0`+ |
|
|
122
|
+
|`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` |
|
|
123
|
+
|`2.0.0` - `2.1.4` |`4.0.0` |
|
|
124
|
+
|`1.1.0` and below|`3.x`|
|
|
125
|
+
|
|
126
|
+
The Appium Python Client depends on [Selenium Python binding](https://pypi.org/project/selenium/), thus
|
|
127
|
+
the Selenium Python binding update might affect the Appium Python Client behavior.
|
|
128
|
+
For exampple, some changes in the Selenium binding could break the Appium client.
|
|
129
|
+
|
|
130
|
+
> **Note**
|
|
131
|
+
> We strongly recommend you to manage dependencies with version management tools such as Pipenv and requirements.txt
|
|
132
|
+
> to keep compatible version combinations.
|
|
133
|
+
|
|
115
134
|
## Usage
|
|
116
135
|
|
|
117
136
|
The Appium Python Client is fully compliant with the WebDriver Protocol
|
|
@@ -131,41 +150,102 @@ As a base for the following code examples, the following sets up the [UnitTest](
|
|
|
131
150
|
environment:
|
|
132
151
|
|
|
133
152
|
```python
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
# Options are only available since client version 2.3.0
|
|
137
|
-
# If you use an older client then switch to desired_capabilities
|
|
138
|
-
# instead: https://github.com/appium/python-client/pull/720
|
|
139
|
-
from appium.options.android import UiAutomator2Options
|
|
140
|
-
from appium.webdriver.common.appiumby import AppiumBy
|
|
153
|
+
# Python/Pytest
|
|
154
|
+
import pytest
|
|
141
155
|
|
|
142
|
-
options = UiAutomator2Options()
|
|
143
|
-
options.platformVersion = '10'
|
|
144
|
-
options.udid = '123456789ABC'
|
|
145
|
-
options.app = PATH('../../../apps/test-app.apk')
|
|
146
|
-
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
147
|
-
self.driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
|
|
148
|
-
el = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
149
|
-
el.click()
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
```python
|
|
153
|
-
# iOS environment
|
|
154
156
|
from appium import webdriver
|
|
155
157
|
# Options are only available since client version 2.3.0
|
|
156
158
|
# If you use an older client then switch to desired_capabilities
|
|
157
159
|
# instead: https://github.com/appium/python-client/pull/720
|
|
160
|
+
from appium.options.android import UiAutomator2Options
|
|
158
161
|
from appium.options.ios import XCUITestOptions
|
|
162
|
+
from appium.webdriver.appium_service import AppiumService
|
|
159
163
|
from appium.webdriver.common.appiumby import AppiumBy
|
|
160
164
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
#
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
APPIUM_PORT = 4723
|
|
166
|
+
APPIUM_HOST = '127.0.0.1'
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# HINT: fixtures below could be extracted into conftest.py
|
|
170
|
+
# HINT: and shared across all tests in the suite
|
|
171
|
+
@pytest.fixture(scope='session')
|
|
172
|
+
def appium_service():
|
|
173
|
+
service = AppiumService()
|
|
174
|
+
service.start(
|
|
175
|
+
# Check the output of `appium server --help` for the complete list of
|
|
176
|
+
# server command line arguments
|
|
177
|
+
args=['--address', APPIUM_HOST, '-p', str(APPIUM_PORT)],
|
|
178
|
+
timeout_ms=20000,
|
|
179
|
+
)
|
|
180
|
+
yield service
|
|
181
|
+
service.stop()
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def create_ios_driver(custom_opts = None):
|
|
185
|
+
options = XCUITestOptions()
|
|
186
|
+
options.platformVersion = '13.4'
|
|
187
|
+
options.udid = '123456789ABC'
|
|
188
|
+
if custom_opts is not None:
|
|
189
|
+
options.load_capabilities(custom_opts)
|
|
190
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
191
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def create_android_driver(custom_opts = None):
|
|
195
|
+
options = UiAutomator2Options()
|
|
196
|
+
options.platformVersion = '10'
|
|
197
|
+
options.udid = '123456789ABC'
|
|
198
|
+
if custom_opts is not None:
|
|
199
|
+
options.load_capabilities(custom_opts)
|
|
200
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
201
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@pytest.fixture
|
|
205
|
+
def ios_driver_factory():
|
|
206
|
+
return create_ios_driver
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@pytest.fixture
|
|
210
|
+
def ios_driver():
|
|
211
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
212
|
+
driver = create_ios_driver()
|
|
213
|
+
yield driver
|
|
214
|
+
driver.quit()
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
@pytest.fixture
|
|
218
|
+
def android_driver_factory():
|
|
219
|
+
return create_android_driver
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
@pytest.fixture
|
|
223
|
+
def android_driver():
|
|
224
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
225
|
+
driver = create_android_driver()
|
|
226
|
+
yield driver
|
|
227
|
+
driver.quit()
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def test_ios_click(appium_service, ios_driver_factory):
|
|
231
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
232
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
233
|
+
with ios_driver_factory({
|
|
234
|
+
'appium:app': '/path/to/app/UICatalog.app.zip'
|
|
235
|
+
}) as driver:
|
|
236
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
237
|
+
el.click()
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def test_android_click(appium_service, android_driver_factory):
|
|
241
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
242
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
243
|
+
with android_driver_factory({
|
|
244
|
+
'appium:app': '/path/to/app/test-app.apk',
|
|
245
|
+
'appium:udid': '567890',
|
|
246
|
+
}) as driver:
|
|
247
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
248
|
+
el.click()
|
|
169
249
|
```
|
|
170
250
|
|
|
171
251
|
## Direct Connect URLs
|
|
@@ -191,10 +271,10 @@ from appium.options.ios import XCUITestOptions
|
|
|
191
271
|
options = XCUITestOptions().load_capabilities({
|
|
192
272
|
'platformVersion': '13.4',
|
|
193
273
|
'deviceName': 'iPhone Simulator',
|
|
194
|
-
'app':
|
|
274
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
195
275
|
})
|
|
196
276
|
|
|
197
|
-
|
|
277
|
+
driver = webdriver.Remote(
|
|
198
278
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
199
279
|
'http://127.0.0.1:4723',
|
|
200
280
|
options=options,
|
|
@@ -221,7 +301,7 @@ options.automation_name = 'safari'
|
|
|
221
301
|
options.set_capability('browser_name', 'safari')
|
|
222
302
|
|
|
223
303
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
224
|
-
|
|
304
|
+
driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
|
|
225
305
|
```
|
|
226
306
|
|
|
227
307
|
## Set custom `AppiumConnection`
|
|
@@ -241,13 +321,15 @@ from appium.webdriver.appium_connection import AppiumConnection
|
|
|
241
321
|
init_args_for_pool_manage = {
|
|
242
322
|
'retries': urllib3.util.retry.Retry(total=3, connect=3, read=False)
|
|
243
323
|
}
|
|
244
|
-
appium_executor = AppiumConnection(
|
|
245
|
-
|
|
324
|
+
appium_executor = AppiumConnection(
|
|
325
|
+
remote_server_addr='http://127.0.0.1:4723',
|
|
326
|
+
init_args_for_pool_manage=init_args_for_pool_manage
|
|
327
|
+
)
|
|
246
328
|
|
|
247
329
|
options = XCUITestOptions()
|
|
248
330
|
options.platformVersion = '13.4'
|
|
249
331
|
options.udid = '123456789ABC'
|
|
250
|
-
options.app =
|
|
332
|
+
options.app = '/full/path/to/app/UICatalog.app.zip'
|
|
251
333
|
driver = webdriver.Remote(appium_executor, options=options)
|
|
252
334
|
```
|
|
253
335
|
|
|
@@ -269,7 +351,7 @@ custom_executor = CustomAppiumConnection(remote_server_addr='http://127.0.0.1:47
|
|
|
269
351
|
options = XCUITestOptions().load_capabilities({
|
|
270
352
|
'platformVersion': '13.4',
|
|
271
353
|
'deviceName': 'iPhone Simulator',
|
|
272
|
-
'app':
|
|
354
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
273
355
|
})
|
|
274
356
|
driver = webdriver.Remote(custom_executor, options=options)
|
|
275
357
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: Appium-Python-Client
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.11.0
|
|
4
4
|
Summary: Python client for Appium
|
|
5
5
|
Home-page: http://appium.io/
|
|
6
6
|
Author: Isaac Murchie
|
|
@@ -14,6 +14,8 @@ Classifier: Programming Language :: Python
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.7
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.8
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
19
|
Classifier: Environment :: Console
|
|
18
20
|
Classifier: Environment :: MacOS X
|
|
19
21
|
Classifier: Environment :: Win32 (MS Windows)
|
|
@@ -112,6 +114,23 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
|
|
|
112
114
|
python setup.py install
|
|
113
115
|
```
|
|
114
116
|
|
|
117
|
+
## Compatibility Matrix
|
|
118
|
+
|
|
119
|
+
|Appium Python Client| Selenium binding|
|
|
120
|
+
|----|----|
|
|
121
|
+
|`2.10.0`+ |`4.1.0`+ |
|
|
122
|
+
|`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` |
|
|
123
|
+
|`2.0.0` - `2.1.4` |`4.0.0` |
|
|
124
|
+
|`1.1.0` and below|`3.x`|
|
|
125
|
+
|
|
126
|
+
The Appium Python Client depends on [Selenium Python binding](https://pypi.org/project/selenium/), thus
|
|
127
|
+
the Selenium Python binding update might affect the Appium Python Client behavior.
|
|
128
|
+
For exampple, some changes in the Selenium binding could break the Appium client.
|
|
129
|
+
|
|
130
|
+
> **Note**
|
|
131
|
+
> We strongly recommend you to manage dependencies with version management tools such as Pipenv and requirements.txt
|
|
132
|
+
> to keep compatible version combinations.
|
|
133
|
+
|
|
115
134
|
## Usage
|
|
116
135
|
|
|
117
136
|
The Appium Python Client is fully compliant with the WebDriver Protocol
|
|
@@ -131,41 +150,102 @@ As a base for the following code examples, the following sets up the [UnitTest](
|
|
|
131
150
|
environment:
|
|
132
151
|
|
|
133
152
|
```python
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
# Options are only available since client version 2.3.0
|
|
137
|
-
# If you use an older client then switch to desired_capabilities
|
|
138
|
-
# instead: https://github.com/appium/python-client/pull/720
|
|
139
|
-
from appium.options.android import UiAutomator2Options
|
|
140
|
-
from appium.webdriver.common.appiumby import AppiumBy
|
|
153
|
+
# Python/Pytest
|
|
154
|
+
import pytest
|
|
141
155
|
|
|
142
|
-
options = UiAutomator2Options()
|
|
143
|
-
options.platformVersion = '10'
|
|
144
|
-
options.udid = '123456789ABC'
|
|
145
|
-
options.app = PATH('../../../apps/test-app.apk')
|
|
146
|
-
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
147
|
-
self.driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
|
|
148
|
-
el = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
149
|
-
el.click()
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
```python
|
|
153
|
-
# iOS environment
|
|
154
156
|
from appium import webdriver
|
|
155
157
|
# Options are only available since client version 2.3.0
|
|
156
158
|
# If you use an older client then switch to desired_capabilities
|
|
157
159
|
# instead: https://github.com/appium/python-client/pull/720
|
|
160
|
+
from appium.options.android import UiAutomator2Options
|
|
158
161
|
from appium.options.ios import XCUITestOptions
|
|
162
|
+
from appium.webdriver.appium_service import AppiumService
|
|
159
163
|
from appium.webdriver.common.appiumby import AppiumBy
|
|
160
164
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
#
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
APPIUM_PORT = 4723
|
|
166
|
+
APPIUM_HOST = '127.0.0.1'
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# HINT: fixtures below could be extracted into conftest.py
|
|
170
|
+
# HINT: and shared across all tests in the suite
|
|
171
|
+
@pytest.fixture(scope='session')
|
|
172
|
+
def appium_service():
|
|
173
|
+
service = AppiumService()
|
|
174
|
+
service.start(
|
|
175
|
+
# Check the output of `appium server --help` for the complete list of
|
|
176
|
+
# server command line arguments
|
|
177
|
+
args=['--address', APPIUM_HOST, '-p', str(APPIUM_PORT)],
|
|
178
|
+
timeout_ms=20000,
|
|
179
|
+
)
|
|
180
|
+
yield service
|
|
181
|
+
service.stop()
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def create_ios_driver(custom_opts = None):
|
|
185
|
+
options = XCUITestOptions()
|
|
186
|
+
options.platformVersion = '13.4'
|
|
187
|
+
options.udid = '123456789ABC'
|
|
188
|
+
if custom_opts is not None:
|
|
189
|
+
options.load_capabilities(custom_opts)
|
|
190
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
191
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def create_android_driver(custom_opts = None):
|
|
195
|
+
options = UiAutomator2Options()
|
|
196
|
+
options.platformVersion = '10'
|
|
197
|
+
options.udid = '123456789ABC'
|
|
198
|
+
if custom_opts is not None:
|
|
199
|
+
options.load_capabilities(custom_opts)
|
|
200
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
201
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@pytest.fixture
|
|
205
|
+
def ios_driver_factory():
|
|
206
|
+
return create_ios_driver
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@pytest.fixture
|
|
210
|
+
def ios_driver():
|
|
211
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
212
|
+
driver = create_ios_driver()
|
|
213
|
+
yield driver
|
|
214
|
+
driver.quit()
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
@pytest.fixture
|
|
218
|
+
def android_driver_factory():
|
|
219
|
+
return create_android_driver
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
@pytest.fixture
|
|
223
|
+
def android_driver():
|
|
224
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
225
|
+
driver = create_android_driver()
|
|
226
|
+
yield driver
|
|
227
|
+
driver.quit()
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def test_ios_click(appium_service, ios_driver_factory):
|
|
231
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
232
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
233
|
+
with ios_driver_factory({
|
|
234
|
+
'appium:app': '/path/to/app/UICatalog.app.zip'
|
|
235
|
+
}) as driver:
|
|
236
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
237
|
+
el.click()
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def test_android_click(appium_service, android_driver_factory):
|
|
241
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
242
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
243
|
+
with android_driver_factory({
|
|
244
|
+
'appium:app': '/path/to/app/test-app.apk',
|
|
245
|
+
'appium:udid': '567890',
|
|
246
|
+
}) as driver:
|
|
247
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
248
|
+
el.click()
|
|
169
249
|
```
|
|
170
250
|
|
|
171
251
|
## Direct Connect URLs
|
|
@@ -191,10 +271,10 @@ from appium.options.ios import XCUITestOptions
|
|
|
191
271
|
options = XCUITestOptions().load_capabilities({
|
|
192
272
|
'platformVersion': '13.4',
|
|
193
273
|
'deviceName': 'iPhone Simulator',
|
|
194
|
-
'app':
|
|
274
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
195
275
|
})
|
|
196
276
|
|
|
197
|
-
|
|
277
|
+
driver = webdriver.Remote(
|
|
198
278
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
199
279
|
'http://127.0.0.1:4723',
|
|
200
280
|
options=options,
|
|
@@ -221,7 +301,7 @@ options.automation_name = 'safari'
|
|
|
221
301
|
options.set_capability('browser_name', 'safari')
|
|
222
302
|
|
|
223
303
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
224
|
-
|
|
304
|
+
driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
|
|
225
305
|
```
|
|
226
306
|
|
|
227
307
|
## Set custom `AppiumConnection`
|
|
@@ -241,13 +321,15 @@ from appium.webdriver.appium_connection import AppiumConnection
|
|
|
241
321
|
init_args_for_pool_manage = {
|
|
242
322
|
'retries': urllib3.util.retry.Retry(total=3, connect=3, read=False)
|
|
243
323
|
}
|
|
244
|
-
appium_executor = AppiumConnection(
|
|
245
|
-
|
|
324
|
+
appium_executor = AppiumConnection(
|
|
325
|
+
remote_server_addr='http://127.0.0.1:4723',
|
|
326
|
+
init_args_for_pool_manage=init_args_for_pool_manage
|
|
327
|
+
)
|
|
246
328
|
|
|
247
329
|
options = XCUITestOptions()
|
|
248
330
|
options.platformVersion = '13.4'
|
|
249
331
|
options.udid = '123456789ABC'
|
|
250
|
-
options.app =
|
|
332
|
+
options.app = '/full/path/to/app/UICatalog.app.zip'
|
|
251
333
|
driver = webdriver.Remote(appium_executor, options=options)
|
|
252
334
|
```
|
|
253
335
|
|
|
@@ -269,7 +351,7 @@ custom_executor = CustomAppiumConnection(remote_server_addr='http://127.0.0.1:47
|
|
|
269
351
|
options = XCUITestOptions().load_capabilities({
|
|
270
352
|
'platformVersion': '13.4',
|
|
271
353
|
'deviceName': 'iPhone Simulator',
|
|
272
|
-
'app':
|
|
354
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
273
355
|
})
|
|
274
356
|
driver = webdriver.Remote(custom_executor, options=options)
|
|
275
357
|
|
|
@@ -84,6 +84,23 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
|
|
|
84
84
|
python setup.py install
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
+
## Compatibility Matrix
|
|
88
|
+
|
|
89
|
+
|Appium Python Client| Selenium binding|
|
|
90
|
+
|----|----|
|
|
91
|
+
|`2.10.0`+ |`4.1.0`+ |
|
|
92
|
+
|`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` |
|
|
93
|
+
|`2.0.0` - `2.1.4` |`4.0.0` |
|
|
94
|
+
|`1.1.0` and below|`3.x`|
|
|
95
|
+
|
|
96
|
+
The Appium Python Client depends on [Selenium Python binding](https://pypi.org/project/selenium/), thus
|
|
97
|
+
the Selenium Python binding update might affect the Appium Python Client behavior.
|
|
98
|
+
For exampple, some changes in the Selenium binding could break the Appium client.
|
|
99
|
+
|
|
100
|
+
> **Note**
|
|
101
|
+
> We strongly recommend you to manage dependencies with version management tools such as Pipenv and requirements.txt
|
|
102
|
+
> to keep compatible version combinations.
|
|
103
|
+
|
|
87
104
|
## Usage
|
|
88
105
|
|
|
89
106
|
The Appium Python Client is fully compliant with the WebDriver Protocol
|
|
@@ -103,41 +120,102 @@ As a base for the following code examples, the following sets up the [UnitTest](
|
|
|
103
120
|
environment:
|
|
104
121
|
|
|
105
122
|
```python
|
|
106
|
-
#
|
|
107
|
-
|
|
108
|
-
# Options are only available since client version 2.3.0
|
|
109
|
-
# If you use an older client then switch to desired_capabilities
|
|
110
|
-
# instead: https://github.com/appium/python-client/pull/720
|
|
111
|
-
from appium.options.android import UiAutomator2Options
|
|
112
|
-
from appium.webdriver.common.appiumby import AppiumBy
|
|
123
|
+
# Python/Pytest
|
|
124
|
+
import pytest
|
|
113
125
|
|
|
114
|
-
options = UiAutomator2Options()
|
|
115
|
-
options.platformVersion = '10'
|
|
116
|
-
options.udid = '123456789ABC'
|
|
117
|
-
options.app = PATH('../../../apps/test-app.apk')
|
|
118
|
-
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
119
|
-
self.driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
|
|
120
|
-
el = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
121
|
-
el.click()
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
```python
|
|
125
|
-
# iOS environment
|
|
126
126
|
from appium import webdriver
|
|
127
127
|
# Options are only available since client version 2.3.0
|
|
128
128
|
# If you use an older client then switch to desired_capabilities
|
|
129
129
|
# instead: https://github.com/appium/python-client/pull/720
|
|
130
|
+
from appium.options.android import UiAutomator2Options
|
|
130
131
|
from appium.options.ios import XCUITestOptions
|
|
132
|
+
from appium.webdriver.appium_service import AppiumService
|
|
131
133
|
from appium.webdriver.common.appiumby import AppiumBy
|
|
132
134
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
#
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
APPIUM_PORT = 4723
|
|
136
|
+
APPIUM_HOST = '127.0.0.1'
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
# HINT: fixtures below could be extracted into conftest.py
|
|
140
|
+
# HINT: and shared across all tests in the suite
|
|
141
|
+
@pytest.fixture(scope='session')
|
|
142
|
+
def appium_service():
|
|
143
|
+
service = AppiumService()
|
|
144
|
+
service.start(
|
|
145
|
+
# Check the output of `appium server --help` for the complete list of
|
|
146
|
+
# server command line arguments
|
|
147
|
+
args=['--address', APPIUM_HOST, '-p', str(APPIUM_PORT)],
|
|
148
|
+
timeout_ms=20000,
|
|
149
|
+
)
|
|
150
|
+
yield service
|
|
151
|
+
service.stop()
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def create_ios_driver(custom_opts = None):
|
|
155
|
+
options = XCUITestOptions()
|
|
156
|
+
options.platformVersion = '13.4'
|
|
157
|
+
options.udid = '123456789ABC'
|
|
158
|
+
if custom_opts is not None:
|
|
159
|
+
options.load_capabilities(custom_opts)
|
|
160
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
161
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def create_android_driver(custom_opts = None):
|
|
165
|
+
options = UiAutomator2Options()
|
|
166
|
+
options.platformVersion = '10'
|
|
167
|
+
options.udid = '123456789ABC'
|
|
168
|
+
if custom_opts is not None:
|
|
169
|
+
options.load_capabilities(custom_opts)
|
|
170
|
+
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
171
|
+
return webdriver.Remote(f'http://{APPIUM_HOST}:{APPIUM_PORT}', options=options)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@pytest.fixture
|
|
175
|
+
def ios_driver_factory():
|
|
176
|
+
return create_ios_driver
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
@pytest.fixture
|
|
180
|
+
def ios_driver():
|
|
181
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
182
|
+
driver = create_ios_driver()
|
|
183
|
+
yield driver
|
|
184
|
+
driver.quit()
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@pytest.fixture
|
|
188
|
+
def android_driver_factory():
|
|
189
|
+
return create_android_driver
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@pytest.fixture
|
|
193
|
+
def android_driver():
|
|
194
|
+
# prefer this fixture if there is no need to customize driver options in tests
|
|
195
|
+
driver = create_android_driver()
|
|
196
|
+
yield driver
|
|
197
|
+
driver.quit()
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def test_ios_click(appium_service, ios_driver_factory):
|
|
201
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
202
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
203
|
+
with ios_driver_factory({
|
|
204
|
+
'appium:app': '/path/to/app/UICatalog.app.zip'
|
|
205
|
+
}) as driver:
|
|
206
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
207
|
+
el.click()
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def test_android_click(appium_service, android_driver_factory):
|
|
211
|
+
# Usage of the context manager ensures the driver session is closed properly
|
|
212
|
+
# after the test completes. Otherwise, make sure to call `driver.quit()` on teardown.
|
|
213
|
+
with android_driver_factory({
|
|
214
|
+
'appium:app': '/path/to/app/test-app.apk',
|
|
215
|
+
'appium:udid': '567890',
|
|
216
|
+
}) as driver:
|
|
217
|
+
el = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value='item')
|
|
218
|
+
el.click()
|
|
141
219
|
```
|
|
142
220
|
|
|
143
221
|
## Direct Connect URLs
|
|
@@ -163,10 +241,10 @@ from appium.options.ios import XCUITestOptions
|
|
|
163
241
|
options = XCUITestOptions().load_capabilities({
|
|
164
242
|
'platformVersion': '13.4',
|
|
165
243
|
'deviceName': 'iPhone Simulator',
|
|
166
|
-
'app':
|
|
244
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
167
245
|
})
|
|
168
246
|
|
|
169
|
-
|
|
247
|
+
driver = webdriver.Remote(
|
|
170
248
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
171
249
|
'http://127.0.0.1:4723',
|
|
172
250
|
options=options,
|
|
@@ -193,7 +271,7 @@ options.automation_name = 'safari'
|
|
|
193
271
|
options.set_capability('browser_name', 'safari')
|
|
194
272
|
|
|
195
273
|
# Appium1 points to http://127.0.0.1:4723/wd/hub by default
|
|
196
|
-
|
|
274
|
+
driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
|
|
197
275
|
```
|
|
198
276
|
|
|
199
277
|
## Set custom `AppiumConnection`
|
|
@@ -213,13 +291,15 @@ from appium.webdriver.appium_connection import AppiumConnection
|
|
|
213
291
|
init_args_for_pool_manage = {
|
|
214
292
|
'retries': urllib3.util.retry.Retry(total=3, connect=3, read=False)
|
|
215
293
|
}
|
|
216
|
-
appium_executor = AppiumConnection(
|
|
217
|
-
|
|
294
|
+
appium_executor = AppiumConnection(
|
|
295
|
+
remote_server_addr='http://127.0.0.1:4723',
|
|
296
|
+
init_args_for_pool_manage=init_args_for_pool_manage
|
|
297
|
+
)
|
|
218
298
|
|
|
219
299
|
options = XCUITestOptions()
|
|
220
300
|
options.platformVersion = '13.4'
|
|
221
301
|
options.udid = '123456789ABC'
|
|
222
|
-
options.app =
|
|
302
|
+
options.app = '/full/path/to/app/UICatalog.app.zip'
|
|
223
303
|
driver = webdriver.Remote(appium_executor, options=options)
|
|
224
304
|
```
|
|
225
305
|
|
|
@@ -241,7 +321,7 @@ custom_executor = CustomAppiumConnection(remote_server_addr='http://127.0.0.1:47
|
|
|
241
321
|
options = XCUITestOptions().load_capabilities({
|
|
242
322
|
'platformVersion': '13.4',
|
|
243
323
|
'deviceName': 'iPhone Simulator',
|
|
244
|
-
'app':
|
|
324
|
+
'app': '/full/path/to/app/UICatalog.app.zip',
|
|
245
325
|
})
|
|
246
326
|
driver = webdriver.Remote(custom_executor, options=options)
|
|
247
327
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = '2.11.0'
|
{Appium-Python-Client-2.10.1 → Appium-Python-Client-2.11.0}/appium/webdriver/appium_connection.py
RENAMED
|
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
|
|
|
24
24
|
from urllib.parse import ParseResult
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
PREFIX_HEADER = 'appium/'
|
|
28
|
+
|
|
29
|
+
|
|
27
30
|
class AppiumConnection(RemoteConnection):
|
|
28
31
|
_proxy_url: Optional[str]
|
|
29
32
|
|
|
@@ -68,7 +71,8 @@ class AppiumConnection(RemoteConnection):
|
|
|
68
71
|
def get_remote_connection_headers(cls, parsed_url: 'ParseResult', keep_alive: bool = True) -> Dict[str, Any]:
|
|
69
72
|
"""Override get_remote_connection_headers in RemoteConnection"""
|
|
70
73
|
headers = RemoteConnection.get_remote_connection_headers(parsed_url, keep_alive=keep_alive)
|
|
71
|
-
|
|
74
|
+
# e.g. appium/0.49 (selenium/3.141.0 (python linux))
|
|
75
|
+
headers['User-Agent'] = f'{PREFIX_HEADER}{library_version()} ({headers["User-Agent"]})'
|
|
72
76
|
if parsed_url.path.endswith('/session'):
|
|
73
77
|
# https://github.com/appium/appium-base-driver/pull/400
|
|
74
78
|
headers['X-Idempotency-Key'] = str(uuid.uuid4())
|