osn-selenium 1.0.0__tar.gz → 1.1.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 (624) hide show
  1. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/PKG-INFO +22 -9
  2. osn_selenium-1.0.0/osn_selenium.egg-info/PKG-INFO → osn_selenium-1.1.0/README.md +18 -21
  3. osn_selenium-1.1.0/osn_selenium/_base_models.py +41 -0
  4. osn_selenium-1.1.0/osn_selenium/_cdp_import.py +253 -0
  5. osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp.py +63 -0
  6. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/browsers_handler/models.py +1 -1
  7. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_decorators.py +19 -10
  8. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_typehints.py +5 -2
  9. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_wrappers.py +0 -3
  10. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/domains/__init__.py +2 -2
  11. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/domains/abstract.py +1 -1
  12. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/domains/fetch.py +1 -1
  13. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/domains_default/fetch.py +1 -1
  14. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/filters.py +1 -1
  15. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/logger/main.py +0 -12
  16. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/logger/models.py +1 -1
  17. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/logger/target.py +42 -22
  18. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/base.py +0 -23
  19. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/lifecycle.py +1 -1
  20. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/models.py +1 -1
  21. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/settings.py +5 -1
  22. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/base.py +12 -23
  23. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/lifecycle.py +6 -1
  24. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/logging.py +10 -2
  25. osn_selenium-1.1.0/osn_selenium/exceptions/dependencies.py +60 -0
  26. osn_selenium-1.1.0/osn_selenium/executors/sync/cdp.py +100 -0
  27. osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp.py +104 -0
  28. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/javascript.py +1 -1
  29. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/javascript.py +0 -4
  30. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/base.py +1 -9
  31. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/blink.py +0 -6
  32. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/base.py +4 -4
  33. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/blink.py +1 -1
  34. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/values.py +1 -1
  35. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/__init__.py +6 -0
  36. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/shadow_root.py +30 -8
  37. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
  38. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
  39. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/alert.py +1 -1
  40. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/browser.py +1 -1
  41. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/browsing_context.py +1 -1
  42. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/dialog.py +1 -1
  43. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/fedcm.py +1 -1
  44. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/mobile.py +1 -1
  45. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/network.py +1 -1
  46. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/permissions.py +1 -1
  47. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/script.py +1 -1
  48. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/shadow_root.py +46 -15
  49. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/storage.py +1 -1
  50. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/switch_to.py +1 -1
  51. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
  52. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/web_element.py +1 -1
  53. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/web_extension.py +1 -1
  54. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/__init__.py +1 -1
  55. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/models.py +1 -1
  56. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
  57. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
  58. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/models.py +1 -1
  59. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/models.py +2 -47
  60. osn_selenium-1.1.0/osn_selenium/trio_threads_mixin.py +159 -0
  61. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_args_helpers.py +2 -2
  62. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_bridges.py +2 -2
  63. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_executable_tables/models.py +1 -1
  64. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
  65. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/base.py +13 -1
  66. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
  67. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/chrome/base.py +13 -1
  68. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/__init__.py +10 -1
  69. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/base.py +16 -8
  70. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
  71. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/edge/base.py +13 -1
  72. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
  73. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/yandex/base.py +13 -1
  74. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/__init__.py +11 -1
  75. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/base.py +11 -1
  76. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
  77. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
  78. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
  79. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
  80. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
  81. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
  82. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -4
  83. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  84. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  85. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/base.py +15 -7
  86. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/capture.py +1 -1
  87. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
  88. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
  89. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
  90. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/file.py +2 -2
  91. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/lifecycle.py +1 -1
  92. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
  93. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/script.py +1 -1
  94. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  95. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  96. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  97. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/core/window.py +3 -3
  98. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
  99. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
  100. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
  101. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
  102. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/base.py +5 -1
  103. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/chrome/base.py +5 -1
  104. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/base.py +9 -2
  105. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/edge/base.py +5 -1
  106. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/yandex/base.py +5 -1
  107. osn_selenium-1.0.0/README.md → osn_selenium-1.1.0/osn_selenium.egg-info/PKG-INFO +34 -1
  108. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium.egg-info/SOURCES.txt +8 -2
  109. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium.egg-info/top_level.txt +1 -0
  110. osn_selenium-1.1.0/pyproject.toml +31 -0
  111. osn_selenium-1.0.0/MANIFEST.in +0 -4
  112. osn_selenium-1.0.0/setup.py +0 -46
  113. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/description.txt +0 -0
  114. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/__init__.py +0 -0
  115. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/_functions.py +0 -0
  116. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/_typehints.py +0 -0
  117. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/__init__.py +0 -0
  118. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/__init__.py +0 -0
  119. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/__init__.py +0 -0
  120. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/accessibility.py +0 -0
  121. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/animation.py +0 -0
  122. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/audits.py +0 -0
  123. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/autofill.py +0 -0
  124. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/background_service.py +0 -0
  125. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -0
  126. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/browser.py +0 -0
  127. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/cache_storage.py +0 -0
  128. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/cast.py +0 -0
  129. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/console.py +0 -0
  130. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/css.py +0 -0
  131. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/debugger.py +0 -0
  132. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/device_access.py +0 -0
  133. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/device_orientation.py +0 -0
  134. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/dom.py +0 -0
  135. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -0
  136. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -0
  137. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/dom_storage.py +0 -0
  138. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/emulation.py +0 -0
  139. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -0
  140. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/extensions.py +0 -0
  141. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/fed_cm.py +0 -0
  142. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/fetch.py +0 -0
  143. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/file_system.py +0 -0
  144. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -0
  145. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -0
  146. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/indexed_db.py +0 -0
  147. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/input.py +0 -0
  148. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/inspector.py +0 -0
  149. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/io.py +0 -0
  150. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/layer_tree.py +0 -0
  151. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/log.py +0 -0
  152. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/media.py +0 -0
  153. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/memory.py +0 -0
  154. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/network.py +0 -0
  155. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/overlay.py +0 -0
  156. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/page.py +0 -0
  157. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/performance.py +0 -0
  158. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -0
  159. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/preload.py +0 -0
  160. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/profiler.py +0 -0
  161. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/pwa.py +0 -0
  162. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/runtime.py +0 -0
  163. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/schema.py +0 -0
  164. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/security.py +0 -0
  165. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/service_worker.py +0 -0
  166. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/storage.py +0 -0
  167. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/system_info.py +0 -0
  168. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/target.py +0 -0
  169. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/tethering.py +0 -0
  170. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/tracing.py +0 -0
  171. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/web_audio.py +0 -0
  172. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/cdp/web_authn.py +0 -0
  173. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/executors/javascript.py +0 -0
  174. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/__init__.py +0 -0
  175. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/__init__.py +0 -0
  176. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/base.py +0 -0
  177. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/click.py +0 -0
  178. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/drag_and_drop.py +0 -0
  179. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/hm_keyboard.py +0 -0
  180. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/hm_move.py +0 -0
  181. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/hm_scroll.py +0 -0
  182. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/keyboard.py +0 -0
  183. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/move.py +0 -0
  184. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/scroll.py +0 -0
  185. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/action_chains/utils.py +0 -0
  186. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/alert.py +0 -0
  187. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/browser.py +0 -0
  188. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/browsing_context.py +0 -0
  189. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/dialog.py +0 -0
  190. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/fedcm.py +0 -0
  191. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/mobile.py +0 -0
  192. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/network.py +0 -0
  193. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/permissions.py +0 -0
  194. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/script.py +0 -0
  195. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/shadow_root.py +0 -0
  196. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/storage.py +0 -0
  197. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/switch_to.py +0 -0
  198. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/web_driver_wait.py +0 -0
  199. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/web_element.py +0 -0
  200. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/instances/web_extension.py +0 -0
  201. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/__init__.py +0 -0
  202. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/__init__.py +0 -0
  203. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/base.py +0 -0
  204. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/casting.py +0 -0
  205. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/features.py +0 -0
  206. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/lifecycle.py +0 -0
  207. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/logging.py +0 -0
  208. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/network.py +0 -0
  209. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/blink/settings.py +0 -0
  210. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/chrome/__init__.py +0 -0
  211. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/chrome/base.py +0 -0
  212. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/chrome/lifecycle.py +0 -0
  213. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/chrome/settings.py +0 -0
  214. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/__init__.py +0 -0
  215. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/actions.py +0 -0
  216. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/auth.py +0 -0
  217. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/base.py +0 -0
  218. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/capture.py +0 -0
  219. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/components.py +0 -0
  220. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/devtools.py +0 -0
  221. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/element.py +0 -0
  222. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/file.py +0 -0
  223. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/lifecycle.py +0 -0
  224. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/navigation.py +0 -0
  225. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/script.py +0 -0
  226. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/settings.py +0 -0
  227. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/storage.py +0 -0
  228. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/timeouts.py +0 -0
  229. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/core/window.py +0 -0
  230. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/edge/__init__.py +0 -0
  231. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/edge/base.py +0 -0
  232. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/edge/lifecycle.py +0 -0
  233. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/edge/settings.py +0 -0
  234. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/yandex/__init__.py +0 -0
  235. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/yandex/base.py +0 -0
  236. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/yandex/lifecycle.py +0 -0
  237. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/abstract/webdriver/yandex/settings.py +0 -0
  238. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/base_mixin.py +0 -0
  239. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/browsers_handler/__init__.py +0 -0
  240. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/browsers_handler/_linux.py +0 -0
  241. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/browsers_handler/_windows.py +0 -0
  242. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/__init__.py +0 -0
  243. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_exception_helpers.py +0 -0
  244. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_functions.py +0 -0
  245. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_system_utils.py +0 -0
  246. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/_validators.py +0 -0
  247. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/domains_default/__init__.py +0 -0
  248. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/logger/__init__.py +0 -0
  249. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/__init__.py +0 -0
  250. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/logging.py +0 -0
  251. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/settings.py +0 -0
  252. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/manager/targets.py +0 -0
  253. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/__init__.py +0 -0
  254. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/detach.py +0 -0
  255. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/discovery.py +0 -0
  256. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/events.py +0 -0
  257. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/dev_tools/target/fingerprint.py +0 -0
  258. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/__init__.py +0 -0
  259. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/base.py +0 -0
  260. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/configuration.py +0 -0
  261. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/devtools.py +0 -0
  262. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/flags.py +0 -0
  263. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/instance.py +0 -0
  264. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/javascript.py +0 -0
  265. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/logic.py +0 -0
  266. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/path.py +0 -0
  267. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/platform.py +0 -0
  268. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/protocol.py +0 -0
  269. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/webdriver.py +0 -0
  270. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/exceptions/window.py +0 -0
  271. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/__init__.py +0 -0
  272. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/__init__.py +0 -0
  273. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/__init__.py +0 -0
  274. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/accessibility.py +0 -0
  275. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/animation.py +0 -0
  276. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/audits.py +0 -0
  277. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/autofill.py +0 -0
  278. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/background_service.py +0 -0
  279. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -0
  280. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/browser.py +0 -0
  281. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/cache_storage.py +0 -0
  282. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/cast.py +0 -0
  283. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/console.py +0 -0
  284. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/css.py +0 -0
  285. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/debugger.py +0 -0
  286. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/device_access.py +0 -0
  287. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/device_orientation.py +0 -0
  288. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/dom.py +0 -0
  289. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/dom_debugger.py +0 -0
  290. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -0
  291. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/dom_storage.py +0 -0
  292. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/emulation.py +0 -0
  293. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -0
  294. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/extensions.py +0 -0
  295. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/fed_cm.py +0 -0
  296. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/fetch.py +0 -0
  297. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/file_system.py +0 -0
  298. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/headless_experimental.py +0 -0
  299. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/heap_profiler.py +0 -0
  300. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/indexed_db.py +0 -0
  301. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/input.py +0 -0
  302. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/inspector.py +0 -0
  303. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/io.py +0 -0
  304. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/layer_tree.py +0 -0
  305. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/log.py +0 -0
  306. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/media.py +0 -0
  307. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/memory.py +0 -0
  308. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/network.py +0 -0
  309. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/overlay.py +0 -0
  310. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/page.py +0 -0
  311. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/performance.py +0 -0
  312. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/performance_timeline.py +0 -0
  313. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/preload.py +0 -0
  314. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/profiler.py +0 -0
  315. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/pwa.py +0 -0
  316. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/runtime.py +0 -0
  317. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/schema.py +0 -0
  318. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/security.py +0 -0
  319. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/service_worker.py +0 -0
  320. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/storage.py +0 -0
  321. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/system_info.py +0 -0
  322. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/target.py +0 -0
  323. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/tethering.py +0 -0
  324. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/tracing.py +0 -0
  325. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/web_audio.py +0 -0
  326. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/cdp/web_authn.py +0 -0
  327. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/sync/javascript.py +0 -0
  328. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/__init__.py +0 -0
  329. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/__init__.py +0 -0
  330. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -0
  331. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/animation.py +0 -0
  332. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/audits.py +0 -0
  333. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/autofill.py +0 -0
  334. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/background_service.py +0 -0
  335. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -0
  336. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/browser.py +0 -0
  337. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -0
  338. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/cast.py +0 -0
  339. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/console.py +0 -0
  340. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/css.py +0 -0
  341. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/debugger.py +0 -0
  342. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/device_access.py +0 -0
  343. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -0
  344. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/dom.py +0 -0
  345. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -0
  346. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -0
  347. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -0
  348. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/emulation.py +0 -0
  349. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -0
  350. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/extensions.py +0 -0
  351. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -0
  352. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/fetch.py +0 -0
  353. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/file_system.py +0 -0
  354. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -0
  355. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -0
  356. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -0
  357. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/input.py +0 -0
  358. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/inspector.py +0 -0
  359. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/io.py +0 -0
  360. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -0
  361. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/log.py +0 -0
  362. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/media.py +0 -0
  363. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/memory.py +0 -0
  364. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/network.py +0 -0
  365. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/overlay.py +0 -0
  366. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/page.py +0 -0
  367. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/performance.py +0 -0
  368. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -0
  369. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/preload.py +0 -0
  370. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/profiler.py +0 -0
  371. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/pwa.py +0 -0
  372. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/runtime.py +0 -0
  373. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/schema.py +0 -0
  374. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/security.py +0 -0
  375. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -0
  376. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/storage.py +0 -0
  377. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/system_info.py +0 -0
  378. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/target.py +0 -0
  379. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/tethering.py +0 -0
  380. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/tracing.py +0 -0
  381. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -0
  382. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -0
  383. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/__init__.py +0 -0
  384. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/__init__.py +0 -0
  385. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/accessibility.py +0 -0
  386. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/animation.py +0 -0
  387. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/audits.py +0 -0
  388. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/autofill.py +0 -0
  389. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/background_service.py +0 -0
  390. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -0
  391. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/browser.py +0 -0
  392. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/cache_storage.py +0 -0
  393. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/cast.py +0 -0
  394. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/console.py +0 -0
  395. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/css.py +0 -0
  396. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/debugger.py +0 -0
  397. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/device_access.py +0 -0
  398. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/device_orientation.py +0 -0
  399. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/dom.py +0 -0
  400. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/dom_debugger.py +0 -0
  401. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -0
  402. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/dom_storage.py +0 -0
  403. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/emulation.py +0 -0
  404. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -0
  405. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/extensions.py +0 -0
  406. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/fed_cm.py +0 -0
  407. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/fetch.py +0 -0
  408. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/file_system.py +0 -0
  409. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/headless_experimental.py +0 -0
  410. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/heap_profiler.py +0 -0
  411. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/indexed_db.py +0 -0
  412. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/input.py +0 -0
  413. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/inspector.py +0 -0
  414. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/io.py +0 -0
  415. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/layer_tree.py +0 -0
  416. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/log.py +0 -0
  417. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/media.py +0 -0
  418. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/memory.py +0 -0
  419. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/network.py +0 -0
  420. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/overlay.py +0 -0
  421. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/page.py +0 -0
  422. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/performance.py +0 -0
  423. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/performance_timeline.py +0 -0
  424. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/preload.py +0 -0
  425. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/profiler.py +0 -0
  426. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/pwa.py +0 -0
  427. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/runtime.py +0 -0
  428. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/schema.py +0 -0
  429. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/security.py +0 -0
  430. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/service_worker.py +0 -0
  431. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/storage.py +0 -0
  432. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/system_info.py +0 -0
  433. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/target.py +0 -0
  434. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/tethering.py +0 -0
  435. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/tracing.py +0 -0
  436. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/web_audio.py +0 -0
  437. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/executors/unified/cdp/web_authn.py +0 -0
  438. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/__init__.py +0 -0
  439. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/_functions.py +0 -0
  440. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/_typehints.py +0 -0
  441. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/_validators.py +0 -0
  442. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/chrome.py +0 -0
  443. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/edge.py +0 -0
  444. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/__init__.py +0 -0
  445. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/chrome.py +0 -0
  446. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/edge.py +0 -0
  447. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/models/yandex.py +0 -0
  448. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/flags/yandex.py +0 -0
  449. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/__init__.py +0 -0
  450. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/_functions.py +0 -0
  451. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/_typehints.py +0 -0
  452. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/_utils.py +0 -0
  453. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/convert.py +0 -0
  454. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/protocols.py +0 -0
  455. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/__init__.py +0 -0
  456. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/base.py +0 -0
  457. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/click.py +0 -0
  458. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/drag_and_drop.py +0 -0
  459. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/hm_keyboard.py +0 -0
  460. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/hm_move.py +0 -0
  461. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/hm_scroll.py +0 -0
  462. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/keyboard.py +0 -0
  463. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/move.py +0 -0
  464. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/scroll.py +0 -0
  465. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/action_chains/utils.py +0 -0
  466. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/alert.py +0 -0
  467. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/browser.py +0 -0
  468. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/browsing_context.py +0 -0
  469. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/dialog.py +0 -0
  470. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/fedcm.py +0 -0
  471. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/mobile.py +0 -0
  472. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/network.py +0 -0
  473. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/permissions.py +0 -0
  474. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/script.py +0 -0
  475. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/storage.py +0 -0
  476. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/switch_to.py +0 -0
  477. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/web_driver_wait.py +0 -0
  478. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/web_element.py +0 -0
  479. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/sync/web_extension.py +0 -0
  480. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/__init__.py +0 -0
  481. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/click.py +0 -0
  482. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +0 -0
  483. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +0 -0
  484. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/hm_move.py +0 -0
  485. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +0 -0
  486. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/keyboard.py +0 -0
  487. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/move.py +0 -0
  488. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/scroll.py +0 -0
  489. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/trio_threads/action_chains/utils.py +0 -0
  490. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/__init__.py +0 -0
  491. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/__init__.py +0 -0
  492. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/base.py +0 -0
  493. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/click.py +0 -0
  494. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/drag_and_drop.py +0 -0
  495. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/hm_keyboard.py +0 -0
  496. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/hm_move.py +0 -0
  497. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/hm_scroll.py +0 -0
  498. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/keyboard.py +0 -0
  499. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/move.py +0 -0
  500. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/scroll.py +0 -0
  501. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/action_chains/utils.py +0 -0
  502. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/alert.py +0 -0
  503. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/browser.py +0 -0
  504. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/browsing_context.py +0 -0
  505. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/dialog.py +0 -0
  506. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/fedcm.py +0 -0
  507. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/mobile.py +0 -0
  508. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/network.py +0 -0
  509. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/permissions.py +0 -0
  510. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/script.py +0 -0
  511. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/shadow_root.py +0 -0
  512. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/storage.py +0 -0
  513. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/switch_to.py +0 -0
  514. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/web_driver_wait.py +0 -0
  515. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/web_element.py +0 -0
  516. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/instances/unified/web_extension.py +0 -0
  517. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/__init__.py +0 -0
  518. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/_functions.py +0 -0
  519. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_decorators.py +0 -0
  520. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_detect/__init__.py +0 -0
  521. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_detect/functions.py +0 -0
  522. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_detect/templates.py +0 -0
  523. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_functions.py +0 -0
  524. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/_typehints.py +0 -0
  525. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/__init__.py +0 -0
  526. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/_core_functions.py +0 -0
  527. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/_functions.py +0 -0
  528. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/_typehints.py +0 -0
  529. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/registry/_utils.py +0 -0
  530. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/__init__.py +0 -0
  531. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/_functions.py +0 -0
  532. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/_templates.py +0 -0
  533. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/_typehints.py +0 -0
  534. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/fingerprint/spoof/rules.py +0 -0
  535. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/functions.py +0 -0
  536. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/check_element_in_viewport.js +0 -0
  537. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_document_scroll_size.js +0 -0
  538. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_element_css.js +0 -0
  539. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_element_rect_in_viewport.js +0 -0
  540. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_random_element_point_in_viewport.js +0 -0
  541. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_viewport_position.js +0 -0
  542. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_viewport_rect.js +0 -0
  543. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/get_viewport_size.js +0 -0
  544. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/open_new_tab.js +0 -0
  545. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/start_fingerprint_detection.js +0 -0
  546. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/javascript/scripts/stop_window_loading.js +0 -0
  547. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/__init__.py +0 -0
  548. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_decorators.py +0 -0
  549. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_executable_tables/__init__.py +0 -0
  550. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_executable_tables/functions.py +0 -0
  551. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/_typehints.py +0 -0
  552. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/protocols.py +0 -0
  553. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/__init__.py +0 -0
  554. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/casting.py +0 -0
  555. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/features.py +0 -0
  556. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/lifecycle.py +0 -0
  557. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/logging.py +0 -0
  558. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/network.py +0 -0
  559. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/blink/settings.py +0 -0
  560. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/chrome/lifecycle.py +0 -0
  561. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/chrome/settings.py +0 -0
  562. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/actions.py +0 -0
  563. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/auth.py +0 -0
  564. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/capture.py +0 -0
  565. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/comonents.py +0 -0
  566. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/devtools.py +0 -0
  567. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/element.py +0 -0
  568. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/file.py +0 -0
  569. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/lifecycle.py +0 -0
  570. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/navigation.py +0 -0
  571. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/script.py +0 -0
  572. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/settings.py +0 -0
  573. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/storage.py +0 -0
  574. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/timeouts.py +0 -0
  575. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/core/window.py +0 -0
  576. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/edge/lifecycle.py +0 -0
  577. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/edge/settings.py +0 -0
  578. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/yandex/lifecycle.py +0 -0
  579. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/sync/yandex/settings.py +0 -0
  580. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/__init__.py +0 -0
  581. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +0 -0
  582. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/blink/settings.py +0 -0
  583. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +0 -0
  584. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/chrome/settings.py +0 -0
  585. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +0 -0
  586. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/edge/settings.py +0 -0
  587. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +0 -0
  588. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/trio_threads/yandex/settings.py +0 -0
  589. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/__init__.py +0 -0
  590. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/__init__.py +0 -0
  591. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/casting.py +0 -0
  592. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/features.py +0 -0
  593. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/lifecycle.py +0 -0
  594. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/logging.py +0 -0
  595. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/network.py +0 -0
  596. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/blink/settings.py +0 -0
  597. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/chrome/__init__.py +0 -0
  598. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/chrome/lifecycle.py +0 -0
  599. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/chrome/settings.py +0 -0
  600. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/__init__.py +0 -0
  601. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/actions.py +0 -0
  602. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/auth.py +0 -0
  603. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/capture.py +0 -0
  604. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/components.py +0 -0
  605. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/devtools.py +0 -0
  606. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/element.py +0 -0
  607. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/file.py +0 -0
  608. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/lifecycle.py +0 -0
  609. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/navigation.py +0 -0
  610. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/script.py +0 -0
  611. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/settings.py +0 -0
  612. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/storage.py +0 -0
  613. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/timeouts.py +0 -0
  614. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/core/window.py +0 -0
  615. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/edge/__init__.py +0 -0
  616. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/edge/lifecycle.py +0 -0
  617. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/edge/settings.py +0 -0
  618. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/yandex/__init__.py +0 -0
  619. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/yandex/lifecycle.py +0 -0
  620. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium/webdrivers/unified/yandex/settings.py +0 -0
  621. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium.egg-info/dependency_links.txt +0 -0
  622. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/osn_selenium.egg-info/requires.txt +0 -0
  623. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/requirements.txt +0 -0
  624. {osn_selenium-1.0.0 → osn_selenium-1.1.0}/setup.cfg +0 -0
@@ -1,9 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osn-selenium
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: An advanced, asynchronous wrapper for Selenium designed for fine-grained browser control. It leverages `trio` for async operations, provides human-like action chains for more natural automation, and offers deep integration with the Chrome DevTools Protocol (CDP) for advanced features like network interception. The library is structured to be extensible, with built-in support for Blink-based browsers like Chrome, Edge, and Yandex.
5
- Author: oddshellnick
6
- Author-email: oddshellnick.programming@gmail.com
5
+ Author-email: oddshellnick <oddshellnick.programming@gmail.com>
6
+ Project-URL: Homepage, https://github.com/oddshellnick/osn-selenium
7
+ Project-URL: Issues, https://github.com/oddshellnick/osn-selenium/issues
8
+ Requires-Python: >=3.12
7
9
  Description-Content-Type: text/markdown
8
10
  Requires-Dist: trio<1.0.0,>=0.32.0
9
11
  Requires-Dist: selenium<5.0.0,>=4.40.0
@@ -11,17 +13,13 @@ Requires-Dist: pydantic<3.0.0,>=2.0.0
11
13
  Requires-Dist: trio-websocket<1.0.0,>=0.12.0
12
14
  Requires-Dist: pywin32>=310; sys_platform == "win32"
13
15
  Requires-Dist: osn-system-utils<0.1.0,>=0.0.4
14
- Dynamic: author
15
- Dynamic: author-email
16
- Dynamic: description
17
- Dynamic: description-content-type
18
- Dynamic: requires-dist
19
- Dynamic: summary
20
16
 
21
17
  # osn-selenium: Advanced Selenium Wrapper with Async Support and Fingerprinting Protection
22
18
 
23
19
  osn-selenium is a robust wrapper around Selenium WebDriver designed for automation of Blink-based browsers (Chrome, Edge, Yandex). It extends standard Selenium capabilities by providing native asynchronous support via Trio, deep integration with the Chrome DevTools Protocol (CDP), sophisticated browser fingerprint spoofing, and human-like user interaction simulation.
24
20
 
21
+ For more detailed information, please visit the [wiki page](https://github.com/oddshellnick/osn-selenium/wiki).
22
+
25
23
  ## Technologies
26
24
 
27
25
  | Name | Badge | Description |
@@ -67,12 +65,23 @@ osn-selenium is a robust wrapper around Selenium WebDriver designed for automati
67
65
  pip install osn-selenium
68
66
  ```
69
67
 
68
+ **With pip (beta versions):**
69
+ ```bash
70
+ pip install -i https://test.pypi.org/simple/ osn_system_utils
71
+ ```
72
+
70
73
  * **With git:**
71
74
  ```bash
72
75
  pip install git+https://github.com/oddshellnick/osn-selenium.git
73
76
  ```
74
77
  *(Ensure you have git installed)*
75
78
 
79
+ * **With git (beta versions):**
80
+ ```bash
81
+ pip install git+https://github.com/oddshellnick/osn-selenium.git@dev
82
+ ```
83
+ *(Ensure you have git installed)*
84
+
76
85
  2. **Install the required Python packages using pip:**
77
86
 
78
87
  ```bash
@@ -224,6 +233,10 @@ Utilities for executing JS and managing browser fingerprints.
224
233
 
225
234
  ## Notes
226
235
 
236
+ * **CDP Versioning and External Packages:**
237
+ This library supports a modular CDP (Chrome DevTools Protocol) architecture. Since standard Selenium distributions often deprecate or remove older protocol versions, we maintain a dedicated repository for all versions at [osn-selenium-cdp](https://github.com/oddshellnick/osn-selenium-cdp).
238
+ * **Manual Installation:** You can install specific CDP support by targeting the corresponding branch (e.g., `pip install git+https://github.com/oddshellnick/osn-selenium-cdp.git@v131`).
239
+ * **Structure Requirement:** If you choose to add or create CDP version packages manually, they **must strictly follow the directory structure** used in the `osn-selenium-cdp` repository. This ensures that the internal `MetaPathFinder` hook can correctly intercept and redirect imports from `selenium.webdriver.common.devtools`. Deviating from this structure will result in `CDPPackageError` or `ImportError`.
227
240
  * **Concurrency Constraints in `trio_threads`:**
228
241
  The `trio_threads` implementation is built using a unified `trio.Lock`. This means that every driver function and every associated instance (including `ActionChains`, `WebElement`, `Alert`, etc.) can execute only one operation at a time. Do not attempt to parallelize multiple operations (coroutines) within a single browser instance, as they will be queued sequentially. The primary purpose of this asynchronous implementation is to enable the simultaneous management of **multiple browser instances** within a single event loop, rather than concurrent interactions with one browser.
229
242
  * **CDP Domains and Background Tasks:**
@@ -1,27 +1,9 @@
1
- Metadata-Version: 2.4
2
- Name: osn-selenium
3
- Version: 1.0.0
4
- Summary: An advanced, asynchronous wrapper for Selenium designed for fine-grained browser control. It leverages `trio` for async operations, provides human-like action chains for more natural automation, and offers deep integration with the Chrome DevTools Protocol (CDP) for advanced features like network interception. The library is structured to be extensible, with built-in support for Blink-based browsers like Chrome, Edge, and Yandex.
5
- Author: oddshellnick
6
- Author-email: oddshellnick.programming@gmail.com
7
- Description-Content-Type: text/markdown
8
- Requires-Dist: trio<1.0.0,>=0.32.0
9
- Requires-Dist: selenium<5.0.0,>=4.40.0
10
- Requires-Dist: pydantic<3.0.0,>=2.0.0
11
- Requires-Dist: trio-websocket<1.0.0,>=0.12.0
12
- Requires-Dist: pywin32>=310; sys_platform == "win32"
13
- Requires-Dist: osn-system-utils<0.1.0,>=0.0.4
14
- Dynamic: author
15
- Dynamic: author-email
16
- Dynamic: description
17
- Dynamic: description-content-type
18
- Dynamic: requires-dist
19
- Dynamic: summary
20
-
21
1
  # osn-selenium: Advanced Selenium Wrapper with Async Support and Fingerprinting Protection
22
2
 
23
3
  osn-selenium is a robust wrapper around Selenium WebDriver designed for automation of Blink-based browsers (Chrome, Edge, Yandex). It extends standard Selenium capabilities by providing native asynchronous support via Trio, deep integration with the Chrome DevTools Protocol (CDP), sophisticated browser fingerprint spoofing, and human-like user interaction simulation.
24
4
 
5
+ For more detailed information, please visit the [wiki page](https://github.com/oddshellnick/osn-selenium/wiki).
6
+
25
7
  ## Technologies
26
8
 
27
9
  | Name | Badge | Description |
@@ -67,12 +49,23 @@ osn-selenium is a robust wrapper around Selenium WebDriver designed for automati
67
49
  pip install osn-selenium
68
50
  ```
69
51
 
52
+ **With pip (beta versions):**
53
+ ```bash
54
+ pip install -i https://test.pypi.org/simple/ osn_system_utils
55
+ ```
56
+
70
57
  * **With git:**
71
58
  ```bash
72
59
  pip install git+https://github.com/oddshellnick/osn-selenium.git
73
60
  ```
74
61
  *(Ensure you have git installed)*
75
62
 
63
+ * **With git (beta versions):**
64
+ ```bash
65
+ pip install git+https://github.com/oddshellnick/osn-selenium.git@dev
66
+ ```
67
+ *(Ensure you have git installed)*
68
+
76
69
  2. **Install the required Python packages using pip:**
77
70
 
78
71
  ```bash
@@ -224,6 +217,10 @@ Utilities for executing JS and managing browser fingerprints.
224
217
 
225
218
  ## Notes
226
219
 
220
+ * **CDP Versioning and External Packages:**
221
+ This library supports a modular CDP (Chrome DevTools Protocol) architecture. Since standard Selenium distributions often deprecate or remove older protocol versions, we maintain a dedicated repository for all versions at [osn-selenium-cdp](https://github.com/oddshellnick/osn-selenium-cdp).
222
+ * **Manual Installation:** You can install specific CDP support by targeting the corresponding branch (e.g., `pip install git+https://github.com/oddshellnick/osn-selenium-cdp.git@v131`).
223
+ * **Structure Requirement:** If you choose to add or create CDP version packages manually, they **must strictly follow the directory structure** used in the `osn-selenium-cdp` repository. This ensures that the internal `MetaPathFinder` hook can correctly intercept and redirect imports from `selenium.webdriver.common.devtools`. Deviating from this structure will result in `CDPPackageError` or `ImportError`.
227
224
  * **Concurrency Constraints in `trio_threads`:**
228
225
  The `trio_threads` implementation is built using a unified `trio.Lock`. This means that every driver function and every associated instance (including `ActionChains`, `WebElement`, `Alert`, etc.) can execute only one operation at a time. Do not attempt to parallelize multiple operations (coroutines) within a single browser instance, as they will be queued sequentially. The primary purpose of this asynchronous implementation is to enable the simultaneous management of **multiple browser instances** within a single event loop, rather than concurrent interactions with one browser.
229
226
  * **CDP Domains and Background Tasks:**
@@ -236,4 +233,4 @@ Utilities for executing JS and managing browser fingerprints.
236
233
  * **macOS Support:** Extending browser auto-detection and lifecycle management for macOS environments.
237
234
  * **High-Level CDP Handlers:** Expanding the `dev_tools.domains` module to include simplified event-driven logic for `Network`, `Page`, and `Runtime` domains, similar to the current `Fetch` implementation.
238
235
  * **Enhanced Human-Like Actions:** Adding more complex Bezier-based mouse movement patterns and advanced typing jitter to further decrease automation footprints.
239
- * **Single-Instance Internal Concurrency Research:** While the current `trio_threads` implementation is optimized for managing multiple browser instances concurrently, we are researching ways to enable parallel command execution within a *single* browser instance. This long-term goal involves moving away from the global `trio.Lock` toward a more granular task-dispatching system (potentially using `trio.MemorySendChannel` or direct CDP interaction) to allow simultaneous operations without protocol desynchronization.
236
+ * **Single-Instance Internal Concurrency Research:** While the current `trio_threads` implementation is optimized for managing multiple browser instances concurrently, we are researching ways to enable parallel command execution within a *single* browser instance. This long-term goal involves moving away from the global `trio.Lock` toward a more granular task-dispatching system (potentially using `trio.MemorySendChannel` or direct CDP interaction) to allow simultaneous operations without protocol desynchronization.
@@ -0,0 +1,41 @@
1
+ from pydantic import (
2
+ BaseModel,
3
+ ConfigDict
4
+ )
5
+
6
+
7
+ __all__ = ["DictModel", "ExtraDictModel"]
8
+
9
+
10
+ class ExtraDictModel(BaseModel):
11
+ """
12
+ Base class for Pydantic models that allows extra fields.
13
+
14
+ This configuration allows the model to accept fields that are not
15
+ explicitly defined in the model's schema.
16
+ """
17
+
18
+ model_config = ConfigDict(
19
+ populate_by_name=True,
20
+ extra="allow",
21
+ use_enum_values=True,
22
+ str_strip_whitespace=True,
23
+ validate_assignment=True,
24
+ )
25
+
26
+
27
+ class DictModel(BaseModel):
28
+ """
29
+ Base class for Pydantic models with a predefined configuration.
30
+
31
+ This configuration enforces strict validation rules such as forbidding extra
32
+ fields and stripping whitespace from string inputs.
33
+ """
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ extra="forbid",
38
+ use_enum_values=True,
39
+ str_strip_whitespace=True,
40
+ validate_assignment=True,
41
+ )
@@ -0,0 +1,253 @@
1
+ import re
2
+ import sys
3
+ import pathlib
4
+ import importlib.util
5
+ import urllib.request
6
+ from types import ModuleType
7
+ from datetime import datetime, timedelta
8
+ from importlib.abc import MetaPathFinder
9
+ from importlib.machinery import ModuleSpec
10
+ from osn_selenium._typehints import PATH_TYPEHINT
11
+ from typing import (
12
+ Dict,
13
+ Mapping,
14
+ Optional,
15
+ Sequence,
16
+ Tuple,
17
+ Union
18
+ )
19
+
20
+
21
+ __all__ = ["check_cdp_version_exists_on_github", "install_cdp_hook"]
22
+
23
+ _SELENIUM_CDP_PATTERN = re.compile(r"selenium\.webdriver\.common\.devtools\.v(\d+)(.*)")
24
+ _INTERNAL_CDP_PATTERN = re.compile(r"osn_selenium_cdp_v(\d+)(?!\.legacy)(.*)")
25
+
26
+ _GITHUB_VERSIONS_CACHE: Dict[str, Tuple[bool, datetime]] = {}
27
+ _CDP_PACKAGE_ERROR = None
28
+
29
+
30
+ def _build_cdp_package_error(version: int) -> Exception:
31
+ """
32
+ Creates an instance of the CDPPackageError exception.
33
+
34
+ Args:
35
+ version (int): The version of the CDP package.
36
+
37
+ Returns:
38
+ Exception: An instance of the CDPPackageError.
39
+ """
40
+
41
+ global _CDP_PACKAGE_ERROR
42
+
43
+ if _CDP_PACKAGE_ERROR is None:
44
+ from osn_selenium.exceptions.dependencies import CDPPackageError
45
+ _CDP_PACKAGE_ERROR = CDPPackageError
46
+
47
+ return _CDP_PACKAGE_ERROR(version=version)
48
+
49
+
50
+ def _get_external_spec(fullname: str, root_path: pathlib.Path, submodule_part: str) -> Optional[ModuleSpec]:
51
+ """
52
+ Creates a module spec for an external path.
53
+
54
+ Args:
55
+ fullname (str): The full name of the module.
56
+ root_path (pathlib.Path): The root directory where the module is located.
57
+ submodule_part (str): The part of the name representing submodules.
58
+
59
+ Returns:
60
+ Optional[ModuleSpec]: The module spec if found, otherwise None.
61
+ """
62
+
63
+ if not submodule_part:
64
+ target_path = root_path / "__init__.py"
65
+ is_package = True
66
+ else:
67
+ rel_path = submodule_part.lstrip(".").replace(".", "/")
68
+ target_path = root_path / f"{rel_path}.py"
69
+
70
+ if not target_path.exists():
71
+ target_path = root_path / rel_path / "__init__.py"
72
+ is_package = True
73
+ else:
74
+ is_package = False
75
+
76
+ if target_path.exists():
77
+ spec = importlib.util.spec_from_file_location(
78
+ name=fullname,
79
+ location=str(target_path),
80
+ submodule_search_locations=[str(root_path)]
81
+ if is_package
82
+ else None
83
+ )
84
+
85
+ return spec
86
+
87
+ return None
88
+
89
+
90
+ class _CdpMetaPathFinder(MetaPathFinder):
91
+ """
92
+ A custom meta path finder to redirect Selenium CDP imports.
93
+ """
94
+
95
+ def __init__(
96
+ self,
97
+ cdp_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
98
+ ignore_package_missing: bool = True
99
+ ) -> None:
100
+ """
101
+ Initializes the finder with user-defined CDP paths.
102
+
103
+ Args:
104
+ cdp_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Mapping of versions to paths.
105
+ ignore_package_missing (bool): Whether to ignore missing package errors.
106
+ """
107
+
108
+ self._user_cdp_paths = {k: pathlib.Path(v).resolve() for k, v in (cdp_paths or {}).items()}
109
+
110
+ self._ignore_package_missing = ignore_package_missing
111
+
112
+ def _find_spec_bypassing_self(self, fullname: str, path: Optional[Sequence[str]]) -> Optional[ModuleSpec]:
113
+ """
114
+ Attempts to find the module specification using other finders in sys.meta_path.
115
+
116
+ Args:
117
+ fullname (str): The full name of the module.
118
+ path (Optional[Sequence[str]]): The search path for the module.
119
+
120
+ Returns:
121
+ Optional[ModuleSpec]: The module spec if found, otherwise None.
122
+ """
123
+
124
+ for finder in sys.meta_path:
125
+ if finder is self:
126
+ continue
127
+
128
+ try:
129
+ if hasattr(finder, "find_spec"):
130
+ spec = finder.find_spec(fullname, path)
131
+
132
+ if spec:
133
+ return spec
134
+ except (Exception,):
135
+ continue
136
+
137
+ return None
138
+
139
+ def find_spec(
140
+ self,
141
+ fullname: str,
142
+ path: Optional[Sequence[str]],
143
+ target: Optional[ModuleType] = None,
144
+ ) -> Optional[ModuleSpec]:
145
+ """
146
+ Finds the specification for the requested module if it matches the CDP pattern.
147
+
148
+ Args:
149
+ fullname (str): The full name of the module to find.
150
+ path (Optional[Sequence[str]]): The search path for the module.
151
+ target (Optional[ModuleType]): The module object if it is being reloaded.
152
+
153
+ Returns:
154
+ Optional[ModuleSpec]: The module spec if found, otherwise None.
155
+ """
156
+
157
+ selenium_match = _SELENIUM_CDP_PATTERN.match(fullname)
158
+ internal_match = _INTERNAL_CDP_PATTERN.match(fullname)
159
+
160
+ if not (selenium_match or internal_match):
161
+ return None
162
+
163
+ match = selenium_match or internal_match
164
+ version_part = int(match.group(1))
165
+ submodule_part = match.group(2)
166
+
167
+ user_cdp_path = self._user_cdp_paths.get(version_part, None)
168
+ if user_cdp_path is not None:
169
+ root = (user_cdp_path / "legacy") if selenium_match else user_cdp_path
170
+ return _get_external_spec(fullname=fullname, root_path=root, submodule_part=submodule_part)
171
+
172
+ spec = None
173
+
174
+ if selenium_match:
175
+ target_name = f"osn_selenium_cdp_v{version_part}.legacy{submodule_part}"
176
+ spec = importlib.util.find_spec(target_name, path)
177
+
178
+ if internal_match:
179
+ target_name = f"osn_selenium_cdp_v{version_part}{submodule_part}"
180
+ spec = self._find_spec_bypassing_self(target_name, path)
181
+
182
+ try:
183
+ if spec:
184
+ return importlib.util.spec_from_file_location(
185
+ name=fullname,
186
+ location=spec.origin,
187
+ submodule_search_locations=spec.submodule_search_locations,
188
+ )
189
+ except ModuleNotFoundError:
190
+ if self._ignore_package_missing:
191
+ return None
192
+
193
+ raise _build_cdp_package_error(version=version_part)
194
+
195
+ return None
196
+
197
+
198
+ def install_cdp_hook(
199
+ cdp_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
200
+ ignore_package_missing: bool = True,
201
+ ) -> None:
202
+ """
203
+ Installs the CDP meta path finder into sys.meta_path.
204
+
205
+ Args:
206
+ cdp_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Mapping of versions to custom local paths.
207
+ ignore_package_missing (bool): Whether to ignore missing package errors.
208
+ """
209
+
210
+ for finder in sys.meta_path:
211
+ if isinstance(finder, _CdpMetaPathFinder):
212
+ finder._user_cdp_paths.update({k: pathlib.Path(v).resolve() for k, v in (cdp_paths or {}).items()})
213
+ finder._ignore_package_missing = ignore_package_missing
214
+
215
+ return
216
+
217
+ sys.meta_path.insert(
218
+ 0,
219
+ _CdpMetaPathFinder(cdp_paths=cdp_paths, ignore_package_missing=ignore_package_missing)
220
+ )
221
+
222
+
223
+ def check_cdp_version_exists_on_github(version: Union[int, str]) -> bool:
224
+ """
225
+ Checks if a specific CDP version exists in the remote repository.
226
+
227
+ Args:
228
+ version (Union[int, str]): The version of package.
229
+
230
+ Returns:
231
+ bool: True if the version exists, False otherwise.
232
+ """
233
+
234
+ branch_name = version if isinstance(version, str) else f"v{version}"
235
+
236
+ cached_answer = _GITHUB_VERSIONS_CACHE.get(branch_name, None)
237
+ if cached_answer and datetime.now() - cached_answer[1] < timedelta(hours=12):
238
+ return cached_answer[0]
239
+
240
+ repo_url = f"https://api.github.com/repos/oddshellnick/osn-selenium-cdp/branches/{branch_name}"
241
+
242
+ try:
243
+ request = urllib.request.Request(url=repo_url, headers={"User-Agent": "osn-selenium"})
244
+ request.get_method = lambda: "HEAD"
245
+
246
+ with urllib.request.urlopen(url=request, timeout=5.0) as response:
247
+ existing = response.status == 200
248
+ _GITHUB_VERSIONS_CACHE[branch_name] = (existing, datetime.now())
249
+
250
+ return existing
251
+ except (Exception,):
252
+ _GITHUB_VERSIONS_CACHE[branch_name] = (False, datetime.now())
253
+ return False
@@ -0,0 +1,63 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import TYPE_CHECKING
3
+
4
+
5
+ __all__ = ["AbstractCDPExecutor"]
6
+
7
+ if TYPE_CHECKING:
8
+ from osn_selenium_cdp_v140.executors.abstract import AbstractCDP140Executor
9
+ from osn_selenium_cdp_v141.executors.abstract import AbstractCDP141Executor
10
+ from osn_selenium_cdp_v142.executors.abstract import AbstractCDP142Executor
11
+ from osn_selenium_cdp_v143.executors.abstract import AbstractCDP143Executor
12
+ from osn_selenium_cdp_v144.executors.abstract import AbstractCDP144Executor
13
+
14
+
15
+ class AbstractCDPExecutor(ABC):
16
+ """
17
+ Global abstract interface for accessing different versions of CDP.
18
+ """
19
+
20
+ @property
21
+ @abstractmethod
22
+ def v140(self) -> "AbstractCDP140Executor":
23
+ """
24
+ Access CDP version 140 interface.
25
+ """
26
+
27
+ ...
28
+
29
+ @property
30
+ @abstractmethod
31
+ def v141(self) -> "AbstractCDP141Executor":
32
+ """
33
+ Access CDP version 141 interface.
34
+ """
35
+
36
+ ...
37
+
38
+ @property
39
+ @abstractmethod
40
+ def v142(self) -> "AbstractCDP142Executor":
41
+ """
42
+ Access CDP version 142 interface.
43
+ """
44
+
45
+ ...
46
+
47
+ @property
48
+ @abstractmethod
49
+ def v143(self) -> "AbstractCDP143Executor":
50
+ """
51
+ Access CDP version 143 interface.
52
+ """
53
+
54
+ ...
55
+
56
+ @property
57
+ @abstractmethod
58
+ def v144(self) -> "AbstractCDP144Executor":
59
+ """
60
+ Access CDP version 144 interface.
61
+ """
62
+
63
+ ...
@@ -1,5 +1,5 @@
1
1
  import pathlib
2
- from osn_selenium.models import DictModel
2
+ from osn_selenium._base_models import DictModel
3
3
 
4
4
 
5
5
  __all__ = ["Browser"]
@@ -10,7 +10,8 @@ from typing import (
10
10
  Callable,
11
11
  ParamSpec,
12
12
  TYPE_CHECKING,
13
- TypeVar
13
+ TypeVar,
14
+ Union
14
15
  )
15
16
 
16
17
 
@@ -19,6 +20,7 @@ __all__ = ["background_task_decorator", "log_on_error", "warn_if_active"]
19
20
  if TYPE_CHECKING:
20
21
  from osn_selenium.dev_tools.manager import DevTools
21
22
  from osn_selenium.dev_tools.target.base import BaseMixin
23
+ from osn_selenium.dev_tools.target import DevToolsTarget
22
24
  from osn_selenium.dev_tools._typehints import DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT
23
25
 
24
26
  _METHOD_INPUT = ParamSpec("_METHOD_INPUT")
@@ -74,7 +76,7 @@ def warn_if_active(func: _METHOD) -> _METHOD:
74
76
  raise NotExpectedTypeError(expected_type=["coroutine function", "function"], received_instance=func)
75
77
 
76
78
 
77
- def log_on_error(func: Callable[_METHOD_INPUT, _METHOD_OUTPUT]) -> Callable[_METHOD_INPUT, _METHOD_OUTPUT]:
79
+ def log_on_error(func: _METHOD) -> _METHOD:
78
80
  """
79
81
  Decorator that logs any `BaseException` raised by the decorated async function.
80
82
 
@@ -115,26 +117,33 @@ def log_on_error(func: Callable[_METHOD_INPUT, _METHOD_OUTPUT]) -> Callable[_MET
115
117
 
116
118
  def background_task_decorator(func: "DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT") -> "DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT":
117
119
  """
118
- Decorator for BaseTargetMixin background tasks to manage their lifecycle.
120
+ Decorator for target background tasks to manage their lifecycle.
119
121
 
120
122
  This decorator wraps a target's background task function. It ensures that
121
123
  `target.background_task_ended` event is set when the function completes,
122
124
  allowing the `BaseTargetMixin` to track the task's termination.
123
125
 
124
126
  Args:
125
- func ("devtools_background_func_type"): The asynchronous background task function
126
- to be wrapped. It should accept a `BaseTargetMixin` instance.
127
+ func ("DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT"): The asynchronous background task function
128
+ to be wrapped. It should accept a target instance.
127
129
 
128
130
  Returns:
129
- "devtools_background_func_type": The wrapped function.
131
+ "DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT": The wrapped function.
130
132
  """
131
133
 
132
134
  @functools.wraps(func)
133
- async def wrapper(target: "BaseMixin") -> Any:
134
- target.background_task_ended = trio.Event()
135
+ async def wrapper(target: Union["BaseMixin", "DevToolsTarget"]) -> Any:
136
+ if not target.about_to_stop_event.is_set():
137
+ with trio.CancelScope() as cancel_scope:
138
+ target.cancel_scopes["background_task"] = cancel_scope
135
139
 
136
- await func(target)
140
+ try:
141
+ target.background_task_ended = trio.Event()
137
142
 
138
- target.background_task_ended.set()
143
+ await func(target)
144
+
145
+ target.background_task_ended.set()
146
+ finally:
147
+ target.cancel_scopes.pop("background_task")
139
148
 
140
149
  return wrapper
@@ -3,7 +3,8 @@ from typing import (
3
3
  Callable,
4
4
  Coroutine,
5
5
  Literal,
6
- TYPE_CHECKING
6
+ TYPE_CHECKING,
7
+ Union
7
8
  )
8
9
 
9
10
 
@@ -15,10 +16,12 @@ __all__ = [
15
16
 
16
17
  if TYPE_CHECKING:
17
18
  from osn_selenium.dev_tools.target.base import BaseMixin as BaseTargetMixin
19
+ from osn_selenium.dev_tools.target import DevToolsTarget
18
20
  else:
19
21
  BaseTargetMixin = Any
22
+ DevToolsTarget = Any
20
23
 
21
- DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT = Callable[[BaseTargetMixin], Coroutine[Any, Any, None]]
24
+ DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT = Callable[[Union[BaseTargetMixin, DevToolsTarget]], Coroutine[Any, Any, None]]
22
25
 
23
26
  CDP_LOG_LEVELS_TYPEHINT = Literal[
24
27
  "INFO",
@@ -46,9 +46,6 @@ def _yield_package_item_way(name: Union[str, Iterable[str]]) -> Generator[str, A
46
46
  class DevToolsPackage:
47
47
  """
48
48
  Wrapper around the DevTools module to safely retrieve nested attributes/classes.
49
-
50
- Attributes:
51
- _package (ModuleType): The root DevTools module package.
52
49
  """
53
50
 
54
51
  def __init__(self, package: ModuleType):
@@ -1,4 +1,4 @@
1
- from osn_selenium.models import DictModel
1
+ from osn_selenium._base_models import ExtraDictModel
2
2
  from typing import (
3
3
  Literal,
4
4
  Optional,
@@ -10,7 +10,7 @@ from osn_selenium.dev_tools.domains.fetch import FetchSettings
10
10
  __all__ = ["DomainsSettings", "domains_classes_type", "domains_type"]
11
11
 
12
12
 
13
- class DomainsSettings(DictModel):
13
+ class DomainsSettings(ExtraDictModel):
14
14
  """
15
15
  A dataclass container for configuration settings across different DevTools domains.
16
16
 
@@ -1,5 +1,5 @@
1
1
  import trio
2
- from osn_selenium.models import DictModel
2
+ from osn_selenium._base_models import DictModel
3
3
  from typing import (
4
4
  Any,
5
5
  Callable,
@@ -1,6 +1,6 @@
1
1
  import trio
2
2
  from pydantic import Field
3
- from osn_selenium.models import DictModel
3
+ from osn_selenium._base_models import DictModel
4
4
  from osn_selenium.dev_tools._functions import execute_cdp_command
5
5
  from osn_selenium.exceptions.devtools import (
6
6
  CDPEndExceptions,
@@ -1,6 +1,6 @@
1
1
  import trio
2
2
  from datetime import datetime
3
- from osn_selenium.models import DictModel
3
+ from osn_selenium._base_models import DictModel
4
4
  from osn_selenium.dev_tools._exception_helpers import log_exception
5
5
  from typing import (
6
6
  Any,
@@ -1,6 +1,6 @@
1
1
  from pydantic import Field
2
2
  from typing import List, Optional
3
- from osn_selenium.models import DictModel
3
+ from osn_selenium._base_models import DictModel
4
4
 
5
5
 
6
6
  __all__ = ["TargetFilter", "TargetsFilters"]