Appium-Python-Client 4.2.0__tar.gz → 4.3.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.
Files changed (346) hide show
  1. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/Appium_Python_Client.egg-info/PKG-INFO +52 -6
  2. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/Appium_Python_Client.egg-info/SOURCES.txt +1 -1
  3. appium_python_client-4.3.0/Appium_Python_Client.egg-info/requires.txt +1 -0
  4. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/PKG-INFO +52 -6
  5. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/README.md +50 -4
  6. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/adb_exec_timeout_option.py +1 -3
  7. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_wait_duration_option.py +1 -3
  8. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/avd_launch_timeout_option.py +1 -3
  9. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/avd_ready_timeout_option.py +1 -3
  10. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/auto_webview_timeout_option.py +1 -3
  11. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/espresso_build_config_option.py +1 -3
  12. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/supports_capabilities.py +2 -4
  13. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/flutter_enable_mock_camera_option.py +0 -1
  14. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/app/app_push_timeout_option.py +1 -3
  15. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_launch_timeout_option.py +1 -3
  16. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/webdriver/can_execute_commands.py +1 -2
  17. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/webdriver/can_execute_scripts.py +5 -10
  18. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/webdriver/can_find_elements.py +2 -4
  19. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/webdriver/can_remember_extension_presence.py +2 -4
  20. appium_python_client-4.3.0/appium/version.py +1 -0
  21. appium_python_client-4.3.0/appium/webdriver/appium_connection.py +64 -0
  22. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/appium_service.py +158 -119
  23. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/action_helpers.py +18 -18
  24. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/activities.py +2 -3
  25. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/common.py +7 -10
  26. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/display.py +2 -3
  27. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/gsm.py +10 -19
  28. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/network.py +12 -15
  29. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/performance.py +4 -4
  30. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/power.py +8 -13
  31. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/sms.py +4 -10
  32. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/system_bars.py +2 -3
  33. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/applications.py +22 -22
  34. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/clipboard.py +9 -11
  35. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/context.py +3 -5
  36. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/device_time.py +5 -7
  37. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/execute_driver.py +1 -3
  38. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/execute_mobile_command.py +5 -6
  39. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/flutter_integration/flutter_commands.py +1 -1
  40. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/hw_actions.py +24 -26
  41. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/images_comparison.py +2 -6
  42. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/keyboard.py +18 -22
  43. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/location.py +11 -14
  44. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/log_event.py +7 -10
  45. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/remote_fs.py +7 -13
  46. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/screen_record.py +4 -4
  47. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/session.py +1 -3
  48. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/settings.py +7 -10
  49. appium_python_client-4.3.0/appium/webdriver/locator_converter.py +29 -0
  50. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/switch_to.py +4 -6
  51. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/webdriver.py +35 -105
  52. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/webelement.py +4 -69
  53. appium_python_client-4.3.0/docs/requirements.txt +2 -0
  54. appium_python_client-4.3.0/setup.cfg +4 -0
  55. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/setup.py +1 -1
  56. appium_python_client-4.2.0/Appium_Python_Client.egg-info/requires.txt +0 -1
  57. appium_python_client-4.2.0/appium/version.py +0 -1
  58. appium_python_client-4.2.0/appium/webdriver/appium_connection.py +0 -80
  59. appium_python_client-4.2.0/docs/requirements.txt +0 -2
  60. appium_python_client-4.2.0/setup.cfg +0 -24
  61. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/Appium_Python_Client.egg-info/dependency_links.txt +0 -0
  62. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/Appium_Python_Client.egg-info/top_level.txt +0 -0
  63. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/LICENSE +0 -0
  64. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/MANIFEST.in +0 -0
  65. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/__init__.py +0 -0
  66. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/common/__init__.py +0 -0
  67. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/common/exceptions.py +0 -0
  68. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/common/helper.py +0 -0
  69. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/common/logger.py +0 -0
  70. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/__init__.py +0 -0
  71. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/__init__.py +0 -0
  72. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/__init__.py +0 -0
  73. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/__init__.py +0 -0
  74. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/adb_port_option.py +0 -0
  75. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/allow_delay_adb_option.py +0 -0
  76. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/build_tools_version_option.py +0 -0
  77. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/clear_device_logs_on_start_option.py +0 -0
  78. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/ignore_hidden_api_policy_error_option.py +0 -0
  79. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/logcat_filter_specs_option.py +0 -0
  80. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/logcat_format_option.py +0 -0
  81. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/mock_location_app_option.py +0 -0
  82. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/remote_adb_host_option.py +0 -0
  83. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/skip_logcat_capture_option.py +0 -0
  84. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/adb/suppress_kill_server_option.py +0 -0
  85. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/__init__.py +0 -0
  86. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/allow_test_packages_option.py +0 -0
  87. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/android_install_timeout_option.py +0 -0
  88. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_activity_option.py +0 -0
  89. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_package_option.py +0 -0
  90. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_wait_activity_option.py +0 -0
  91. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_wait_for_launch_option.py +0 -0
  92. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/app_wait_package_option.py +0 -0
  93. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/auto_grant_premissions_option.py +0 -0
  94. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/enforce_app_install_option.py +0 -0
  95. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/intent_action_option.py +0 -0
  96. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/intent_category_option.py +0 -0
  97. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/intent_flags_option.py +0 -0
  98. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/optional_intent_arguments_option.py +0 -0
  99. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/remote_apps_cache_limit_option.py +0 -0
  100. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/app/uninstall_other_packages_option.py +0 -0
  101. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/__init__.py +0 -0
  102. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/avd_args_option.py +0 -0
  103. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/avd_env_option.py +0 -0
  104. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/avd_option.py +0 -0
  105. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/gps_enabled_option.py +0 -0
  106. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/avd/network_speed_option.py +0 -0
  107. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/__init__.py +0 -0
  108. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chrome_logging_prefs_option.py +0 -0
  109. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chrome_options_option.py +0 -0
  110. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_args_option.py +0 -0
  111. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_chrome_mapping_file_option.py +0 -0
  112. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_disable_build_check_option.py +0 -0
  113. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_executable_dir_option.py +0 -0
  114. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_executable_option.py +0 -0
  115. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_port_option.py +0 -0
  116. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_ports_option.py +0 -0
  117. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/chromedriver_use_system_executable_option.py +0 -0
  118. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/ensure_webviews_have_pages_option.py +0 -0
  119. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/extract_chrome_android_package_from_context_name_option.py +0 -0
  120. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/native_web_screenshot_option.py +0 -0
  121. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/recreate_chrome_driver_sessions_option.py +0 -0
  122. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/show_chromedriver_log_option.py +0 -0
  123. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/context/webview_devtools_port_option.py +0 -0
  124. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/localization/__init__.py +0 -0
  125. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/localization/locale_script_option.py +0 -0
  126. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/__init__.py +0 -0
  127. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/skip_unlock_option.py +0 -0
  128. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/unlock_key_option.py +0 -0
  129. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/unlock_strategy_option.py +0 -0
  130. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/unlock_success_timeout_option.py +0 -0
  131. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/locking/unlock_type_option.py +0 -0
  132. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/mjpeg/__init__.py +0 -0
  133. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/mjpeg/mjpeg_screenshot_url_option.py +0 -0
  134. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/other/__init__.py +0 -0
  135. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/other/disable_suppress_accessibility_service_option.py +0 -0
  136. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/other/user_profile_option.py +0 -0
  137. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/__init__.py +0 -0
  138. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/key_alias_option.py +0 -0
  139. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/key_password_option.py +0 -0
  140. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/keystore_password_option.py +0 -0
  141. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/keystore_path_option.py +0 -0
  142. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/no_sign_option.py +0 -0
  143. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/common/signing/use_keystore_option.py +0 -0
  144. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/__init__.py +0 -0
  145. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/activity_options_option.py +0 -0
  146. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/app_locale_option.py +0 -0
  147. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/base.py +0 -0
  148. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/espresso_server_launch_timeout_option.py +0 -0
  149. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/force_espresso_rebuild_option.py +0 -0
  150. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/intent_options_option.py +0 -0
  151. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/espresso/show_gradle_log_option.py +0 -0
  152. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/__init__.py +0 -0
  153. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/base.py +0 -0
  154. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/disable_window_animation_option.py +0 -0
  155. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/mjpeg_server_port_option.py +0 -0
  156. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/skip_device_initialization_option.py +0 -0
  157. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/skip_server_installation_option.py +0 -0
  158. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/uiautomator2_server_install_timeout_option.py +0 -0
  159. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/uiautomator2_server_launch_timeout_option.py +0 -0
  160. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/android/uiautomator2/uiautomator2_server_read_timeout_option.py +0 -0
  161. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/__init__.py +0 -0
  162. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/app_option.py +0 -0
  163. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/auto_web_view_option.py +0 -0
  164. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/automation_name_option.py +0 -0
  165. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/base.py +0 -0
  166. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/browser_name_option.py +0 -0
  167. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/bundle_id_option.py +0 -0
  168. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/clear_system_files_option.py +0 -0
  169. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/device_name_option.py +0 -0
  170. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/enable_performance_logging_option.py +0 -0
  171. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/event_timings_option.py +0 -0
  172. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/full_reset_option.py +0 -0
  173. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/is_headless_option.py +0 -0
  174. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/language_option.py +0 -0
  175. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/locale_option.py +0 -0
  176. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/new_command_timeout_option.py +0 -0
  177. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/no_reset_option.py +0 -0
  178. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/orientation_option.py +0 -0
  179. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/other_apps_option.py +0 -0
  180. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/platform_version_option.py +0 -0
  181. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/postrun_option.py +0 -0
  182. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/prerun_option.py +0 -0
  183. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/print_page_source_on_find_failure_option.py +0 -0
  184. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/skip_log_capture_option.py +0 -0
  185. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/system_host_option.py +0 -0
  186. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/system_port_option.py +0 -0
  187. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/common/udid_option.py +0 -0
  188. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/__init__.py +0 -0
  189. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/base.py +0 -0
  190. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/flutter_element_wait_timeout_option.py +0 -0
  191. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/flutter_server_launch_timeout_option.py +0 -0
  192. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/flutter_integration/flutter_system_port_option.py +0 -0
  193. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/__init__.py +0 -0
  194. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/android_storage_option.py +0 -0
  195. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/base.py +0 -0
  196. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/firefox_options_option.py +0 -0
  197. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/marionette_port_option.py +0 -0
  198. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/gecko/verbosity_option.py +0 -0
  199. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/__init__.py +0 -0
  200. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/__init__.py +0 -0
  201. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/automatic_inspection_option.py +0 -0
  202. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/automatic_profiling_option.py +0 -0
  203. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/base.py +0 -0
  204. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/device_name_option.py +0 -0
  205. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/device_type_option.py +0 -0
  206. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/device_udid_option.py +0 -0
  207. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/platform_build_version_option.py +0 -0
  208. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/platform_version_option.py +0 -0
  209. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/use_simulator_option.py +0 -0
  210. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/safari/webkit_webrtc_option.py +0 -0
  211. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/__init__.py +0 -0
  212. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/app/__init__.py +0 -0
  213. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/app/app_install_strategy_option.py +0 -0
  214. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/app/localizable_strings_dir_option.py +0 -0
  215. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/base.py +0 -0
  216. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/general/__init__.py +0 -0
  217. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/general/include_device_caps_to_session_info_option.py +0 -0
  218. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/general/reset_location_service_option.py +0 -0
  219. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/other/__init__.py +0 -0
  220. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/other/command_timeouts_option.py +0 -0
  221. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/other/launch_with_idb_option.py +0 -0
  222. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/other/show_ios_log_option.py +0 -0
  223. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/other/use_json_source_option.py +0 -0
  224. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/__init__.py +0 -0
  225. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/calendar_access_authorized_option.py +0 -0
  226. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/calendar_format_option.py +0 -0
  227. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/connect_hardware_keyboard_option.py +0 -0
  228. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/custom_ssl_cert_option.py +0 -0
  229. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/enforce_fresh_simulator_creation_option.py +0 -0
  230. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/force_simulator_software_keyboard_presence_option.py +0 -0
  231. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/ios_simulator_logs_predicate_option.py +0 -0
  232. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/keep_key_chains_option.py +0 -0
  233. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/keychains_exclude_patterns_option.py +0 -0
  234. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/permissions_option.py +0 -0
  235. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/reduce_motion_option.py +0 -0
  236. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/reset_on_session_start_only_option.py +0 -0
  237. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/scale_factor_option.py +0 -0
  238. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/shutdown_other_simulators_option.py +0 -0
  239. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/simulator_devices_set_path_option.py +0 -0
  240. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/simulator_pasteboard_automatic_sync_option.py +0 -0
  241. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/simulator_startup_timeout_option.py +0 -0
  242. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/simulator_trace_pointer_option.py +0 -0
  243. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/simulator/simulator_window_center_option.py +0 -0
  244. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/__init__.py +0 -0
  245. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/allow_provisioning_device_regitration_option.py +0 -0
  246. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/auto_accept_alerts_option.py +0 -0
  247. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/auto_disimiss_alerts_option.py +0 -0
  248. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/derived_data_path_option.py +0 -0
  249. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/disable_automatic_screenshots_option.py +0 -0
  250. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/force_app_launch_option.py +0 -0
  251. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/keychain_password_option.py +0 -0
  252. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/keychain_path_option.py +0 -0
  253. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/max_typing_frequency_option.py +0 -0
  254. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/mjpeg_server_port_option.py +0 -0
  255. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/process_arguments_option.py +0 -0
  256. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/result_bundle_path_option.py +0 -0
  257. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/screenshot_quality_option.py +0 -0
  258. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/should_terminate_app_option.py +0 -0
  259. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/should_use_singleton_test_manager_option.py +0 -0
  260. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/show_xcode_log_option.py +0 -0
  261. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/simple_is_visible_check_option.py +0 -0
  262. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/updated_wda_bundle_id_option.py +0 -0
  263. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/use_native_caching_strategy_option.py +0 -0
  264. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/use_new_wda_option.py +0 -0
  265. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/use_prebuilt_wda_option.py +0 -0
  266. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/use_simple_build_test_option.py +0 -0
  267. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/use_xctestrun_file_option.py +0 -0
  268. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wait_for_idle_timeout_option.py +0 -0
  269. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wait_for_quiescence_option.py +0 -0
  270. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_base_url_option.py +0 -0
  271. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_connection_timeout_option.py +0 -0
  272. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_eventloop_idle_delay_option.py +0 -0
  273. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_local_port_option.py +0 -0
  274. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_startup_retries_option.py +0 -0
  275. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/wda_startup_retry_interval_option.py +0 -0
  276. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/web_driver_agent_url_option.py +0 -0
  277. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/xcode_org_id_option.py +0 -0
  278. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/wda/xcode_signing_id_option.py +0 -0
  279. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/__init__.py +0 -0
  280. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/absolute_web_locations_option.py +0 -0
  281. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/additional_webview_bundle_ids_option.py +0 -0
  282. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/enable_async_execute_from_https_option.py +0 -0
  283. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/full_context_list_option.py +0 -0
  284. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/include_safari_in_webviews_option.py +0 -0
  285. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/native_web_tap_option.py +0 -0
  286. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_garbage_collect_option.py +0 -0
  287. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_ignore_fraud_warning_option.py +0 -0
  288. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_ignore_web_hostnames_option.py +0 -0
  289. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_initial_url_option.py +0 -0
  290. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_log_all_communication_hex_dump_option.py +0 -0
  291. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_log_all_communication_option.py +0 -0
  292. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_open_links_in_background_option.py +0 -0
  293. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_socket_chunk_size_option.py +0 -0
  294. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/safari_web_inspector_max_frame_length_option.py +0 -0
  295. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/webkit_response_timeout_option.py +0 -0
  296. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/webview_connect_retries_option.py +0 -0
  297. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/ios/xcuitest/webview/webview_connect_timeout_option.py +0 -0
  298. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/__init__.py +0 -0
  299. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/__init__.py +0 -0
  300. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/app_path_option.py +0 -0
  301. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/arguments_option.py +0 -0
  302. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/base.py +0 -0
  303. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/bootstrap_root_option.py +0 -0
  304. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/environment_option.py +0 -0
  305. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/server_startup_timeout_option.py +0 -0
  306. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/show_server_logs_option.py +0 -0
  307. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/skip_app_kill_option.py +0 -0
  308. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/mac/mac2/web_driver_agent_mac_url_option.py +0 -0
  309. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/__init__.py +0 -0
  310. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/__init__.py +0 -0
  311. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/app_arguments_option.py +0 -0
  312. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/app_top_level_window_option.py +0 -0
  313. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/app_working_dir_option.py +0 -0
  314. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/base.py +0 -0
  315. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/create_session_timeout_option.py +0 -0
  316. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/expreimental_web_driver_option.py +0 -0
  317. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/options/windows/windows/wait_for_app_launch_option.py +0 -0
  318. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/__init__.py +0 -0
  319. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/protocols/webdriver/__init__.py +0 -0
  320. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/py.typed +0 -0
  321. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/__init__.py +0 -0
  322. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/applicationstate.py +0 -0
  323. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/clipboard_content_type.py +0 -0
  324. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/command_method.py +0 -0
  325. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/common/__init__.py +0 -0
  326. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/common/appiumby.py +0 -0
  327. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/connectiontype.py +0 -0
  328. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/errorhandler.py +0 -0
  329. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/__init__.py +0 -0
  330. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/__init__.py +0 -0
  331. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/android/nativekey.py +0 -0
  332. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/flutter_integration/__init__.py +0 -0
  333. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/flutter_integration/flutter_finder.py +0 -0
  334. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/extensions/flutter_integration/scroll_directions.py +0 -0
  335. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/appium/webdriver/mobilecommand.py +0 -0
  336. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/Makefile +0 -0
  337. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/README.md +0 -0
  338. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/conf.py +0 -0
  339. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/generate.sh +0 -0
  340. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/index.rst +0 -0
  341. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/make.bat +0 -0
  342. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/webdriver.common.rst +0 -0
  343. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/webdriver.extensions.android.rst +0 -0
  344. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/webdriver.extensions.rst +0 -0
  345. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/webdriver.extensions.search_context.rst +0 -0
  346. {appium_python_client-4.2.0 → appium_python_client-4.3.0}/docs/webdriver.rst +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Appium-Python-Client
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Python client for Appium
5
5
  Home-page: http://appium.io/
6
6
  Author: Isaac Murchie
@@ -25,7 +25,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
25
25
  Classifier: Topic :: Software Development :: Testing
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
- Requires-Dist: selenium~=4.12
28
+ Requires-Dist: selenium<5.0,~=4.26
29
29
 
30
30
  # Appium Python Client
31
31
 
@@ -34,8 +34,6 @@ Requires-Dist: selenium~=4.12
34
34
 
35
35
  [![Functional Tests](https://github.com/appium/python-client/actions/workflows/functional-test.yml/badge.svg)](https://github.com/appium/python-client/actions/workflows/functional-test.yml)
36
36
 
37
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
38
-
39
37
  An extension library for adding [WebDriver Protocol](https://www.w3.org/TR/webdriver/) and Appium commands to the Selenium Python language binding for use with the mobile testing framework [Appium](https://appium.io).
40
38
 
41
39
  ## Getting the Appium Python client
@@ -72,7 +70,8 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
72
70
 
73
71
  |Appium Python Client| Selenium binding| Python version |
74
72
  |----|----|----|
75
- |`3.0.0`+ |`4.12.0`+ | 3.8+ |
73
+ |`4.3.0`+ |`4.26.0`+ | 3.8+ |
74
+ |`3.0.0` - `4.2.1` |`4.12.0` - `4.25.0` | 3.8+ |
76
75
  |`2.10.0` - `2.11.1` |`4.1.0` - `4.11.2` | 3.7+ |
77
76
  |`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` | 3.7+ |
78
77
  |`2.0.0` - `2.1.4` |`4.0.0` | 3.7+ |
@@ -266,6 +265,26 @@ def test_android_click(appium_service, android_driver_factory):
266
265
  el.click()
267
266
  ```
268
267
 
268
+ ### Available `options`
269
+
270
+ Appium Python Client has a common options class named `AppiumOptions` but the available commands are minimal.
271
+ It does not have driver/automationName specific commands unless adding commands with `add_command` method.
272
+
273
+ Available options for each automation name below will help to check what options are already defined.
274
+ Please use proper options for your automaiton usage.
275
+
276
+ `automationName` | Package path
277
+ |:---|:-----|
278
+ any | `appium.options.common.base.AppiumOptions`
279
+ `uiautomator2` | `appium.options.android.Uiautomator2Options`
280
+ `espresso` | `appium.options.android.EspressoOptions`
281
+ `xcuitest` | `appium.options.ios.XCUITestOptions`
282
+ `safari` | `appium.options.ios.SafariOptions`
283
+ `mac2` | `appium.options.mac.Mac2Options`
284
+ `windows` | `appium.options.WindowsOptions`
285
+ `gecko` | `appium.options.GeckoOptions`
286
+ `flutterintegration` | `appium.options.flutter_integration.FlutterOptions`
287
+
269
288
  ## Direct Connect URLs
270
289
 
271
290
  If your Selenium/Appium server decorates the new session capabilities response with the following keys:
@@ -322,6 +341,21 @@ options.set_capability('browser_name', 'safari')
322
341
  driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
323
342
  ```
324
343
 
344
+ Since Appium Python client v4.3.0, we recommend using `selenium.webdriver.remote.client_config.ClientConfig`
345
+ instead of giving `strict_ssl` as an argument of `webdriver.Remote` below to configure the validation.
346
+
347
+ ```python
348
+ from appium import webdriver
349
+
350
+ from selenium.webdriver.remote.client_config import ClientConfig
351
+
352
+ client_config = ClientConfig(
353
+ remote_server_addr='http://127.0.0.1:4723',
354
+ ignore_certificates=True
355
+ )
356
+ driver = webdriver.Remote(client_config.remote_server_addr, options=options, client_config=client_config)
357
+ ```
358
+
325
359
  ## Set custom `AppiumConnection`
326
360
 
327
361
  The first argument of `webdriver.Remote` can set an arbitrary command executor for you.
@@ -375,6 +409,18 @@ driver = webdriver.Remote(custom_executor, options=options)
375
409
 
376
410
  ```
377
411
 
412
+ The `AppiumConnection` can set `selenium.webdriver.remote.client_config.ClientConfig` as well.
413
+
414
+ ## Relaxing HTTP request read timeout
415
+
416
+ Appium Python Client has `120` seconds read timeout on each HTTP request since the version v4.3.0 because of
417
+ the corresponding selenium binding version.
418
+ You have two methods to extend the read timeout.
419
+
420
+ 1. Set `GLOBAL_DEFAULT_TIMEOUT` environment variable
421
+ 2. Configure timeout via `selenium.webdriver.remote.client_config.ClientConfig`
422
+ - `timeout` argument, or
423
+ - `init_args_for_pool_manager` argument for `urllib3.PoolManager`
378
424
 
379
425
  ## Documentation
380
426
 
@@ -384,7 +430,7 @@ driver = webdriver.Remote(custom_executor, options=options)
384
430
  ## Development
385
431
 
386
432
  - Code Style: [PEP-0008](https://www.python.org/dev/peps/pep-0008/)
387
- - Apply `black`, `isort` and `mypy` as pre commit hook
433
+ - Apply `ruff` as pre commit hook
388
434
  - Run `make` command for development. See `make help` output for details
389
435
  - Docstring style: [Google Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
390
436
  - `gitchangelog` generates `CHANGELOG.rst`
@@ -1,7 +1,6 @@
1
1
  LICENSE
2
2
  MANIFEST.in
3
3
  README.md
4
- setup.cfg
5
4
  setup.py
6
5
  Appium_Python_Client.egg-info/PKG-INFO
7
6
  Appium_Python_Client.egg-info/SOURCES.txt
@@ -287,6 +286,7 @@ appium/webdriver/clipboard_content_type.py
287
286
  appium/webdriver/command_method.py
288
287
  appium/webdriver/connectiontype.py
289
288
  appium/webdriver/errorhandler.py
289
+ appium/webdriver/locator_converter.py
290
290
  appium/webdriver/mobilecommand.py
291
291
  appium/webdriver/switch_to.py
292
292
  appium/webdriver/webdriver.py
@@ -0,0 +1 @@
1
+ selenium<5.0,~=4.26
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Appium-Python-Client
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Python client for Appium
5
5
  Home-page: http://appium.io/
6
6
  Author: Isaac Murchie
@@ -25,7 +25,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
25
25
  Classifier: Topic :: Software Development :: Testing
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
- Requires-Dist: selenium~=4.12
28
+ Requires-Dist: selenium<5.0,~=4.26
29
29
 
30
30
  # Appium Python Client
31
31
 
@@ -34,8 +34,6 @@ Requires-Dist: selenium~=4.12
34
34
 
35
35
  [![Functional Tests](https://github.com/appium/python-client/actions/workflows/functional-test.yml/badge.svg)](https://github.com/appium/python-client/actions/workflows/functional-test.yml)
36
36
 
37
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
38
-
39
37
  An extension library for adding [WebDriver Protocol](https://www.w3.org/TR/webdriver/) and Appium commands to the Selenium Python language binding for use with the mobile testing framework [Appium](https://appium.io).
40
38
 
41
39
  ## Getting the Appium Python client
@@ -72,7 +70,8 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
72
70
 
73
71
  |Appium Python Client| Selenium binding| Python version |
74
72
  |----|----|----|
75
- |`3.0.0`+ |`4.12.0`+ | 3.8+ |
73
+ |`4.3.0`+ |`4.26.0`+ | 3.8+ |
74
+ |`3.0.0` - `4.2.1` |`4.12.0` - `4.25.0` | 3.8+ |
76
75
  |`2.10.0` - `2.11.1` |`4.1.0` - `4.11.2` | 3.7+ |
77
76
  |`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` | 3.7+ |
78
77
  |`2.0.0` - `2.1.4` |`4.0.0` | 3.7+ |
@@ -266,6 +265,26 @@ def test_android_click(appium_service, android_driver_factory):
266
265
  el.click()
267
266
  ```
268
267
 
268
+ ### Available `options`
269
+
270
+ Appium Python Client has a common options class named `AppiumOptions` but the available commands are minimal.
271
+ It does not have driver/automationName specific commands unless adding commands with `add_command` method.
272
+
273
+ Available options for each automation name below will help to check what options are already defined.
274
+ Please use proper options for your automaiton usage.
275
+
276
+ `automationName` | Package path
277
+ |:---|:-----|
278
+ any | `appium.options.common.base.AppiumOptions`
279
+ `uiautomator2` | `appium.options.android.Uiautomator2Options`
280
+ `espresso` | `appium.options.android.EspressoOptions`
281
+ `xcuitest` | `appium.options.ios.XCUITestOptions`
282
+ `safari` | `appium.options.ios.SafariOptions`
283
+ `mac2` | `appium.options.mac.Mac2Options`
284
+ `windows` | `appium.options.WindowsOptions`
285
+ `gecko` | `appium.options.GeckoOptions`
286
+ `flutterintegration` | `appium.options.flutter_integration.FlutterOptions`
287
+
269
288
  ## Direct Connect URLs
270
289
 
271
290
  If your Selenium/Appium server decorates the new session capabilities response with the following keys:
@@ -322,6 +341,21 @@ options.set_capability('browser_name', 'safari')
322
341
  driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
323
342
  ```
324
343
 
344
+ Since Appium Python client v4.3.0, we recommend using `selenium.webdriver.remote.client_config.ClientConfig`
345
+ instead of giving `strict_ssl` as an argument of `webdriver.Remote` below to configure the validation.
346
+
347
+ ```python
348
+ from appium import webdriver
349
+
350
+ from selenium.webdriver.remote.client_config import ClientConfig
351
+
352
+ client_config = ClientConfig(
353
+ remote_server_addr='http://127.0.0.1:4723',
354
+ ignore_certificates=True
355
+ )
356
+ driver = webdriver.Remote(client_config.remote_server_addr, options=options, client_config=client_config)
357
+ ```
358
+
325
359
  ## Set custom `AppiumConnection`
326
360
 
327
361
  The first argument of `webdriver.Remote` can set an arbitrary command executor for you.
@@ -375,6 +409,18 @@ driver = webdriver.Remote(custom_executor, options=options)
375
409
 
376
410
  ```
377
411
 
412
+ The `AppiumConnection` can set `selenium.webdriver.remote.client_config.ClientConfig` as well.
413
+
414
+ ## Relaxing HTTP request read timeout
415
+
416
+ Appium Python Client has `120` seconds read timeout on each HTTP request since the version v4.3.0 because of
417
+ the corresponding selenium binding version.
418
+ You have two methods to extend the read timeout.
419
+
420
+ 1. Set `GLOBAL_DEFAULT_TIMEOUT` environment variable
421
+ 2. Configure timeout via `selenium.webdriver.remote.client_config.ClientConfig`
422
+ - `timeout` argument, or
423
+ - `init_args_for_pool_manager` argument for `urllib3.PoolManager`
378
424
 
379
425
  ## Documentation
380
426
 
@@ -384,7 +430,7 @@ driver = webdriver.Remote(custom_executor, options=options)
384
430
  ## Development
385
431
 
386
432
  - Code Style: [PEP-0008](https://www.python.org/dev/peps/pep-0008/)
387
- - Apply `black`, `isort` and `mypy` as pre commit hook
433
+ - Apply `ruff` as pre commit hook
388
434
  - Run `make` command for development. See `make help` output for details
389
435
  - Docstring style: [Google Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
390
436
  - `gitchangelog` generates `CHANGELOG.rst`
@@ -5,8 +5,6 @@
5
5
 
6
6
  [![Functional Tests](https://github.com/appium/python-client/actions/workflows/functional-test.yml/badge.svg)](https://github.com/appium/python-client/actions/workflows/functional-test.yml)
7
7
 
8
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
9
-
10
8
  An extension library for adding [WebDriver Protocol](https://www.w3.org/TR/webdriver/) and Appium commands to the Selenium Python language binding for use with the mobile testing framework [Appium](https://appium.io).
11
9
 
12
10
  ## Getting the Appium Python client
@@ -43,7 +41,8 @@ download and unarchive the source tarball (Appium-Python-Client-X.X.tar.gz).
43
41
 
44
42
  |Appium Python Client| Selenium binding| Python version |
45
43
  |----|----|----|
46
- |`3.0.0`+ |`4.12.0`+ | 3.8+ |
44
+ |`4.3.0`+ |`4.26.0`+ | 3.8+ |
45
+ |`3.0.0` - `4.2.1` |`4.12.0` - `4.25.0` | 3.8+ |
47
46
  |`2.10.0` - `2.11.1` |`4.1.0` - `4.11.2` | 3.7+ |
48
47
  |`2.2.0` - `2.9.0` |`4.1.0` - `4.9.0` | 3.7+ |
49
48
  |`2.0.0` - `2.1.4` |`4.0.0` | 3.7+ |
@@ -237,6 +236,26 @@ def test_android_click(appium_service, android_driver_factory):
237
236
  el.click()
238
237
  ```
239
238
 
239
+ ### Available `options`
240
+
241
+ Appium Python Client has a common options class named `AppiumOptions` but the available commands are minimal.
242
+ It does not have driver/automationName specific commands unless adding commands with `add_command` method.
243
+
244
+ Available options for each automation name below will help to check what options are already defined.
245
+ Please use proper options for your automaiton usage.
246
+
247
+ `automationName` | Package path
248
+ |:---|:-----|
249
+ any | `appium.options.common.base.AppiumOptions`
250
+ `uiautomator2` | `appium.options.android.Uiautomator2Options`
251
+ `espresso` | `appium.options.android.EspressoOptions`
252
+ `xcuitest` | `appium.options.ios.XCUITestOptions`
253
+ `safari` | `appium.options.ios.SafariOptions`
254
+ `mac2` | `appium.options.mac.Mac2Options`
255
+ `windows` | `appium.options.WindowsOptions`
256
+ `gecko` | `appium.options.GeckoOptions`
257
+ `flutterintegration` | `appium.options.flutter_integration.FlutterOptions`
258
+
240
259
  ## Direct Connect URLs
241
260
 
242
261
  If your Selenium/Appium server decorates the new session capabilities response with the following keys:
@@ -293,6 +312,21 @@ options.set_capability('browser_name', 'safari')
293
312
  driver = webdriver.Remote('http://127.0.0.1:4723', options=options, strict_ssl=False)
294
313
  ```
295
314
 
315
+ Since Appium Python client v4.3.0, we recommend using `selenium.webdriver.remote.client_config.ClientConfig`
316
+ instead of giving `strict_ssl` as an argument of `webdriver.Remote` below to configure the validation.
317
+
318
+ ```python
319
+ from appium import webdriver
320
+
321
+ from selenium.webdriver.remote.client_config import ClientConfig
322
+
323
+ client_config = ClientConfig(
324
+ remote_server_addr='http://127.0.0.1:4723',
325
+ ignore_certificates=True
326
+ )
327
+ driver = webdriver.Remote(client_config.remote_server_addr, options=options, client_config=client_config)
328
+ ```
329
+
296
330
  ## Set custom `AppiumConnection`
297
331
 
298
332
  The first argument of `webdriver.Remote` can set an arbitrary command executor for you.
@@ -346,6 +380,18 @@ driver = webdriver.Remote(custom_executor, options=options)
346
380
 
347
381
  ```
348
382
 
383
+ The `AppiumConnection` can set `selenium.webdriver.remote.client_config.ClientConfig` as well.
384
+
385
+ ## Relaxing HTTP request read timeout
386
+
387
+ Appium Python Client has `120` seconds read timeout on each HTTP request since the version v4.3.0 because of
388
+ the corresponding selenium binding version.
389
+ You have two methods to extend the read timeout.
390
+
391
+ 1. Set `GLOBAL_DEFAULT_TIMEOUT` environment variable
392
+ 2. Configure timeout via `selenium.webdriver.remote.client_config.ClientConfig`
393
+ - `timeout` argument, or
394
+ - `init_args_for_pool_manager` argument for `urllib3.PoolManager`
349
395
 
350
396
  ## Documentation
351
397
 
@@ -355,7 +401,7 @@ driver = webdriver.Remote(custom_executor, options=options)
355
401
  ## Development
356
402
 
357
403
  - Code Style: [PEP-0008](https://www.python.org/dev/peps/pep-0008/)
358
- - Apply `black`, `isort` and `mypy` as pre commit hook
404
+ - Apply `ruff` as pre commit hook
359
405
  - Run `make` command for development. See `make help` output for details
360
406
  - Docstring style: [Google Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
361
407
  - `gitchangelog` generates `CHANGELOG.rst`
@@ -38,6 +38,4 @@ class AdbExecTimeoutOption(SupportsCapabilities):
38
38
  Maximum time to wait until single ADB command is executed.
39
39
  20000 ms by default.
40
40
  """
41
- self.set_capability(
42
- ADB_EXEC_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(ADB_EXEC_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -38,6 +38,4 @@ class AppWaitDurationOption(SupportsCapabilities):
38
38
  Maximum amount of time to wait until the application under test is started
39
39
  (e.g. an activity returns the control to the caller). 20000 ms by default.
40
40
  """
41
- self.set_capability(
42
- APP_WAIT_DURATION, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(APP_WAIT_DURATION, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -38,6 +38,4 @@ class AvdLaunchTimeoutOption(SupportsCapabilities):
38
38
  Maximum timeout to wait until Android Emulator is started.
39
39
  60000 ms by default.
40
40
  """
41
- self.set_capability(
42
- AVD_LAUNCH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(AVD_LAUNCH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -38,6 +38,4 @@ class AvdReadyTimeoutOption(SupportsCapabilities):
38
38
  Maximum timeout to wait until Android Emulator is fully booted and is ready for usage.
39
39
  60000 ms by default
40
40
  """
41
- self.set_capability(
42
- AVD_READY_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(AVD_READY_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -38,6 +38,4 @@ class AutoWebviewTimeoutOption(SupportsCapabilities):
38
38
  """
39
39
  Timeout to wait until a web view is available.
40
40
  """
41
- self.set_capability(
42
- AUTO_WEBVIEW_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(AUTO_WEBVIEW_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -43,6 +43,4 @@ class EspressoBuildConfigOption(SupportsCapabilities):
43
43
  https://github.com/appium/appium-espresso-driver#espresso-build-config
44
44
  for more information on how to properly construct such config.
45
45
  """
46
- self.set_capability(
47
- ESPRESSO_BUILD_CONFIG, value if isinstance(value, str) else json.dumps(value, ensure_ascii=False)
48
- )
46
+ self.set_capability(ESPRESSO_BUILD_CONFIG, value if isinstance(value, str) else json.dumps(value, ensure_ascii=False))
@@ -21,8 +21,6 @@ T = TypeVar('T')
21
21
 
22
22
 
23
23
  class SupportsCapabilities(Protocol):
24
- def set_capability(self: T, name: str, value: Any) -> T:
25
- ...
24
+ def set_capability(self: T, name: str, value: Any) -> T: ...
26
25
 
27
- def get_capability(self: T, name: str) -> Any:
28
- ...
26
+ def get_capability(self: T, name: str) -> Any: ...
@@ -15,7 +15,6 @@
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
17
 
18
- from typing import Optional
19
18
 
20
19
  from appium.options.common.supports_capabilities import SupportsCapabilities
21
20
 
@@ -39,6 +39,4 @@ class AppPushTimeoutOption(SupportsCapabilities):
39
39
  Works for real devices only.
40
40
  The default value is 30000ms.
41
41
  """
42
- self.set_capability(
43
- APP_PUSH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
44
- )
42
+ self.set_capability(APP_PUSH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -38,6 +38,4 @@ class WdaLaunchTimeoutOption(SupportsCapabilities):
38
38
  Timeout to wait for WebDriverAgent to be pingable,
39
39
  after its building is finished. Defaults to 60000ms.
40
40
  """
41
- self.set_capability(
42
- WDA_LAUNCH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value
43
- )
41
+ self.set_capability(WDA_LAUNCH_TIMEOUT, int(value.total_seconds() * 1000) if isinstance(value, timedelta) else value)
@@ -20,5 +20,4 @@ from selenium.webdriver.remote.remote_connection import RemoteConnection
20
20
  class CanExecuteCommands(Protocol):
21
21
  command_executor: RemoteConnection
22
22
 
23
- def execute(self, driver_command: str, params: Union[Dict, None] = None) -> Dict:
24
- ...
23
+ def execute(self, driver_command: str, params: Union[Dict, None] = None) -> Dict: ...
@@ -16,17 +16,12 @@ from typing import Any, List, Optional, Protocol
16
16
 
17
17
 
18
18
  class CanExecuteScripts(Protocol):
19
- def pin_script(self, script: str, script_key: Optional[Any] = None) -> Any:
20
- ...
19
+ def pin_script(self, script: str, script_key: Optional[Any] = None) -> Any: ...
21
20
 
22
- def unpin(self, script_key: Any) -> None:
23
- ...
21
+ def unpin(self, script_key: Any) -> None: ...
24
22
 
25
- def get_pinned_scripts(self) -> List[str]:
26
- ...
23
+ def get_pinned_scripts(self) -> List[str]: ...
27
24
 
28
- def execute_script(self, script: str, *args: Any) -> Any:
29
- ...
25
+ def execute_script(self, script: str, *args: Any) -> Any: ...
30
26
 
31
- def execute_async_script(self, script: str, *args: Any) -> Any:
32
- ...
27
+ def execute_async_script(self, script: str, *args: Any) -> Any: ...
@@ -19,8 +19,6 @@ if TYPE_CHECKING:
19
19
 
20
20
 
21
21
  class CanFindElements(Protocol):
22
- def find_element(self, by: str, value: Union[str, Dict, None] = None) -> 'WebElement':
23
- ...
22
+ def find_element(self, by: str, value: Union[str, Dict, None] = None) -> 'WebElement': ...
24
23
 
25
- def find_elements(self, by: str, value: Union[str, Dict, None] = None) -> List['WebElement']:
26
- ...
24
+ def find_elements(self, by: str, value: Union[str, Dict, None] = None) -> List['WebElement']: ...
@@ -18,8 +18,6 @@ T = TypeVar('T')
18
18
 
19
19
 
20
20
  class CanRememberExtensionPresence(Protocol):
21
- def assert_extension_exists(self: T, ext_name: str) -> T:
22
- ...
21
+ def assert_extension_exists(self: T, ext_name: str) -> T: ...
23
22
 
24
- def mark_extension_absence(self: T, ext_name: str) -> T:
25
- ...
23
+ def mark_extension_absence(self: T, ext_name: str) -> T: ...
@@ -0,0 +1 @@
1
+ version = '4.3.0'
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import uuid
16
+ from typing import TYPE_CHECKING, Any, Dict
17
+
18
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
19
+
20
+ from appium.common.helper import library_version
21
+
22
+ if TYPE_CHECKING:
23
+ from urllib.parse import ParseResult
24
+
25
+
26
+ PREFIX_HEADER = 'appium/'
27
+
28
+ HEADER_IDEMOTENCY_KEY = 'X-Idempotency-Key'
29
+
30
+
31
+ def _get_new_headers(key: str, headers: Dict[str, str]) -> Dict[str, str]:
32
+ """Return a new dictionary of heafers without the given key.
33
+ The key match is case-insensitive."""
34
+ lower_key = key.lower()
35
+ return {k: v for k, v in headers.items() if k.lower() != lower_key}
36
+
37
+
38
+ class AppiumConnection(RemoteConnection):
39
+ """
40
+ A subclass of selenium.webdriver.remote.remote_connection.Remoteconnection.
41
+
42
+ The changes are:
43
+ - The default user agent
44
+ - Adds 'X-Idempotency-Key' header in a new session request to avoid proceeding
45
+ the same request multiple times in the Appium server side.
46
+ - https://github.com/appium/appium-base-driver/pull/400
47
+ """
48
+
49
+ user_agent = f'{PREFIX_HEADER}{library_version()} ({RemoteConnection.user_agent})'
50
+ extra_headers = {}
51
+
52
+ @classmethod
53
+ def get_remote_connection_headers(cls, parsed_url: 'ParseResult', keep_alive: bool = True) -> Dict[str, Any]:
54
+ """Override get_remote_connection_headers in RemoteConnection to control the extra headers.
55
+ This method will be used in sending a request method in this class.
56
+ """
57
+
58
+ if parsed_url.path.endswith('/session'):
59
+ # https://github.com/appium/appium-base-driver/pull/400
60
+ cls.extra_headers[HEADER_IDEMOTENCY_KEY] = str(uuid.uuid4())
61
+ else:
62
+ cls.extra_headers = _get_new_headers(HEADER_IDEMOTENCY_KEY, cls.extra_headers)
63
+
64
+ return {**super().get_remote_connection_headers(parsed_url, keep_alive=keep_alive), **cls.extra_headers}