osn-selenium 1.0.0__py3-none-any.whl → 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_decorators.py +57 -0
  4. osn_selenium/_trio_threads_helpers.py +157 -0
  5. osn_selenium/_typehints.py +1 -1
  6. osn_selenium/abstract/executors/cdp.py +63 -0
  7. osn_selenium/abstract/webdriver/blink/base.py +14 -0
  8. osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
  9. osn_selenium/abstract/webdriver/core/base.py +0 -14
  10. osn_selenium/abstract/webdriver/core/capture.py +4 -3
  11. osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
  12. osn_selenium/abstract/webdriver/core/script.py +5 -4
  13. osn_selenium/abstract/webdriver/core/window.py +11 -11
  14. osn_selenium/browsers_handler/models.py +1 -1
  15. osn_selenium/dev_tools/_decorators.py +19 -51
  16. osn_selenium/dev_tools/_functions.py +2 -4
  17. osn_selenium/dev_tools/_typehints.py +5 -2
  18. osn_selenium/dev_tools/_wrappers.py +0 -3
  19. osn_selenium/dev_tools/domains/__init__.py +2 -2
  20. osn_selenium/dev_tools/domains/abstract.py +1 -1
  21. osn_selenium/dev_tools/domains/fetch.py +6 -8
  22. osn_selenium/dev_tools/domains_default/fetch.py +2 -2
  23. osn_selenium/dev_tools/filters.py +1 -1
  24. osn_selenium/dev_tools/logger/main.py +9 -21
  25. osn_selenium/dev_tools/logger/models.py +1 -1
  26. osn_selenium/dev_tools/logger/target.py +49 -29
  27. osn_selenium/dev_tools/manager/base.py +10 -42
  28. osn_selenium/dev_tools/manager/lifecycle.py +84 -75
  29. osn_selenium/dev_tools/manager/logging.py +1 -1
  30. osn_selenium/dev_tools/manager/targets.py +13 -5
  31. osn_selenium/dev_tools/models.py +1 -1
  32. osn_selenium/dev_tools/settings.py +9 -5
  33. osn_selenium/dev_tools/target/base.py +30 -34
  34. osn_selenium/dev_tools/target/discovery.py +1 -1
  35. osn_selenium/dev_tools/target/events.py +2 -2
  36. osn_selenium/dev_tools/target/fingerprint.py +1 -1
  37. osn_selenium/dev_tools/target/lifecycle.py +103 -38
  38. osn_selenium/dev_tools/target/logging.py +11 -3
  39. osn_selenium/exceptions/__init__.py +0 -1
  40. osn_selenium/exceptions/base.py +28 -1
  41. osn_selenium/exceptions/bidi_bridge.py +59 -0
  42. osn_selenium/exceptions/configuration.py +1 -8
  43. osn_selenium/exceptions/dependencies.py +60 -0
  44. osn_selenium/exceptions/devtools.py +9 -39
  45. osn_selenium/exceptions/experimental.py +26 -0
  46. osn_selenium/exceptions/flags.py +0 -2
  47. osn_selenium/exceptions/instance.py +1 -9
  48. osn_selenium/exceptions/javascript.py +0 -2
  49. osn_selenium/exceptions/logic.py +0 -2
  50. osn_selenium/exceptions/path.py +1 -9
  51. osn_selenium/exceptions/platform.py +0 -2
  52. osn_selenium/exceptions/protocol.py +0 -3
  53. osn_selenium/exceptions/webdriver.py +1 -7
  54. osn_selenium/exceptions/window.py +1 -8
  55. osn_selenium/executors/sync/cdp.py +95 -0
  56. osn_selenium/executors/trio_bidi/cdp.py +101 -0
  57. osn_selenium/executors/trio_bidi/javascript.py +101 -0
  58. osn_selenium/executors/trio_threads/cdp.py +99 -0
  59. osn_selenium/executors/trio_threads/javascript.py +1 -1
  60. osn_selenium/executors/unified/javascript.py +0 -4
  61. osn_selenium/flags/base.py +7 -13
  62. osn_selenium/flags/blink.py +2 -8
  63. osn_selenium/flags/chrome.py +6 -6
  64. osn_selenium/flags/edge.py +6 -6
  65. osn_selenium/flags/models/base.py +4 -4
  66. osn_selenium/flags/models/blink.py +1 -1
  67. osn_selenium/flags/models/values.py +1 -1
  68. osn_selenium/instances/convert.py +44 -3
  69. osn_selenium/instances/protocols.py +47 -1
  70. osn_selenium/instances/sync/action_chains/__init__.py +6 -0
  71. osn_selenium/instances/sync/browsing_context.py +2 -2
  72. osn_selenium/instances/sync/script.py +7 -2
  73. osn_selenium/instances/sync/shadow_root.py +30 -8
  74. osn_selenium/instances/sync/web_element.py +1 -1
  75. osn_selenium/instances/trio_bidi/__init__.py +1 -0
  76. osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
  77. osn_selenium/instances/trio_bidi/switch_to.py +143 -0
  78. osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
  79. osn_selenium/instances/trio_bidi/web_element.py +239 -0
  80. osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
  81. osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
  82. osn_selenium/instances/trio_threads/alert.py +1 -1
  83. osn_selenium/instances/trio_threads/browser.py +1 -1
  84. osn_selenium/instances/trio_threads/browsing_context.py +3 -3
  85. osn_selenium/instances/trio_threads/dialog.py +1 -1
  86. osn_selenium/instances/trio_threads/fedcm.py +1 -1
  87. osn_selenium/instances/trio_threads/mobile.py +1 -1
  88. osn_selenium/instances/trio_threads/network.py +1 -1
  89. osn_selenium/instances/trio_threads/permissions.py +1 -1
  90. osn_selenium/instances/trio_threads/script.py +8 -3
  91. osn_selenium/instances/trio_threads/shadow_root.py +46 -15
  92. osn_selenium/instances/trio_threads/storage.py +1 -1
  93. osn_selenium/instances/trio_threads/switch_to.py +1 -1
  94. osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
  95. osn_selenium/instances/trio_threads/web_element.py +1 -1
  96. osn_selenium/instances/trio_threads/web_extension.py +1 -1
  97. osn_selenium/instances/unified/browsing_context.py +2 -2
  98. osn_selenium/instances/unified/script.py +2 -2
  99. osn_selenium/instances/unified/web_element.py +3 -5
  100. osn_selenium/javascript/fingerprint/__init__.py +3 -2
  101. osn_selenium/javascript/fingerprint/registry/models.py +1 -1
  102. osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
  103. osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
  104. osn_selenium/javascript/models.py +1 -1
  105. osn_selenium/models.py +2 -47
  106. osn_selenium/trio_bidi/__init__.py +1 -0
  107. osn_selenium/trio_bidi/_context_vars.py +12 -0
  108. osn_selenium/trio_bidi/_error_mappings.py +123 -0
  109. osn_selenium/trio_bidi/_error_redirects.py +194 -0
  110. osn_selenium/trio_bidi/_file_functions.py +28 -0
  111. osn_selenium/trio_bidi/_internal_mappings.py +10 -0
  112. osn_selenium/trio_bidi/_models.py +199 -0
  113. osn_selenium/trio_bidi/_typehints.py +20 -0
  114. osn_selenium/trio_bidi/connection_pool.py +587 -0
  115. osn_selenium/trio_bidi/mapping/__init__.py +1 -0
  116. osn_selenium/trio_bidi/mapping/_constants.py +14 -0
  117. osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
  118. osn_selenium/trio_bidi/mapping/_utils.py +4 -0
  119. osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
  120. osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
  121. osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
  122. osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
  123. osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
  124. osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
  125. osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
  126. osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
  127. osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
  128. osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
  129. osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
  130. osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
  131. osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
  132. osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
  133. osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
  134. osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
  135. osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
  136. osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
  137. osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
  138. osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
  139. osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
  140. osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
  141. osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
  142. osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
  143. osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
  144. osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
  145. osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
  146. osn_selenium/trio_bidi/mixin.py +186 -0
  147. osn_selenium/trio_bidi/remote_connection.py +164 -0
  148. osn_selenium/{base_mixin.py → trio_threads_mixin.py} +31 -40
  149. osn_selenium/webdrivers/_args_helpers.py +120 -7
  150. osn_selenium/webdrivers/_bridges.py +2 -2
  151. osn_selenium/webdrivers/_executable_tables/models.py +1 -1
  152. osn_selenium/webdrivers/_typehints.py +9 -3
  153. osn_selenium/webdrivers/protocols.py +81 -1
  154. osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
  155. osn_selenium/webdrivers/sync/blink/base.py +23 -1
  156. osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
  157. osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
  158. osn_selenium/webdrivers/sync/chrome/base.py +13 -1
  159. osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
  160. osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
  161. osn_selenium/webdrivers/sync/core/__init__.py +10 -1
  162. osn_selenium/webdrivers/sync/core/base.py +18 -18
  163. osn_selenium/webdrivers/sync/core/capture.py +3 -2
  164. osn_selenium/webdrivers/sync/core/file.py +3 -2
  165. osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
  166. osn_selenium/webdrivers/sync/core/script.py +3 -2
  167. osn_selenium/webdrivers/sync/core/window.py +3 -3
  168. osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
  169. osn_selenium/webdrivers/sync/edge/base.py +13 -1
  170. osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
  171. osn_selenium/webdrivers/sync/edge/settings.py +6 -1
  172. osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
  173. osn_selenium/webdrivers/sync/yandex/base.py +13 -1
  174. osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
  175. osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
  176. osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
  177. osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
  178. osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
  179. osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
  180. osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
  181. osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
  182. osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
  183. osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
  184. osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
  185. osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
  186. osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
  187. osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
  188. osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
  189. osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
  190. osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
  191. osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
  192. osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
  193. osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
  194. osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
  195. osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
  196. osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
  197. osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
  198. osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
  199. osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
  200. osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
  201. osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
  202. osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
  203. osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
  204. osn_selenium/webdrivers/trio_threads/blink/__init__.py +18 -2
  205. osn_selenium/webdrivers/trio_threads/blink/base.py +25 -1
  206. osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
  207. osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
  208. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
  209. osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
  210. osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
  211. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
  212. osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
  213. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
  214. osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
  215. osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -14
  216. osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  217. osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  218. osn_selenium/webdrivers/trio_threads/core/base.py +18 -22
  219. osn_selenium/webdrivers/trio_threads/core/capture.py +4 -3
  220. osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
  221. osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
  222. osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
  223. osn_selenium/webdrivers/trio_threads/core/file.py +5 -4
  224. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +45 -11
  225. osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
  226. osn_selenium/webdrivers/trio_threads/core/script.py +4 -3
  227. osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  228. osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  229. osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  230. osn_selenium/webdrivers/trio_threads/core/window.py +6 -6
  231. osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
  232. osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
  233. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
  234. osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
  235. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
  236. osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
  237. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
  238. osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
  239. osn_selenium/webdrivers/unified/blink/base.py +9 -1
  240. osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
  241. osn_selenium/webdrivers/unified/chrome/base.py +9 -1
  242. osn_selenium/webdrivers/unified/core/auth.py +4 -2
  243. osn_selenium/webdrivers/unified/core/base.py +19 -6
  244. osn_selenium/webdrivers/unified/core/capture.py +3 -2
  245. osn_selenium/webdrivers/unified/core/components.py +12 -7
  246. osn_selenium/webdrivers/unified/core/devtools.py +2 -1
  247. osn_selenium/webdrivers/unified/core/file.py +3 -2
  248. osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
  249. osn_selenium/webdrivers/unified/core/script.py +5 -3
  250. osn_selenium/webdrivers/unified/core/storage.py +2 -1
  251. osn_selenium/webdrivers/unified/core/window.py +9 -8
  252. osn_selenium/webdrivers/unified/edge/base.py +9 -1
  253. osn_selenium/webdrivers/unified/yandex/base.py +9 -1
  254. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +24 -10
  255. osn_selenium-1.2.0.dist-info/RECORD +480 -0
  256. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +1 -1
  257. osn_selenium/abstract/executors/cdp/__init__.py +0 -435
  258. osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
  259. osn_selenium/abstract/executors/cdp/animation.py +0 -47
  260. osn_selenium/abstract/executors/cdp/audits.py +0 -39
  261. osn_selenium/abstract/executors/cdp/autofill.py +0 -34
  262. osn_selenium/abstract/executors/cdp/background_service.py +0 -22
  263. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
  264. osn_selenium/abstract/executors/cdp/browser.py +0 -122
  265. osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
  266. osn_selenium/abstract/executors/cdp/cast.py +0 -31
  267. osn_selenium/abstract/executors/cdp/console.py +0 -18
  268. osn_selenium/abstract/executors/cdp/css.py +0 -197
  269. osn_selenium/abstract/executors/cdp/debugger.py +0 -198
  270. osn_selenium/abstract/executors/cdp/device_access.py +0 -22
  271. osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
  272. osn_selenium/abstract/executors/cdp/dom.py +0 -305
  273. osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
  274. osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
  275. osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
  276. osn_selenium/abstract/executors/cdp/emulation.py +0 -259
  277. osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
  278. osn_selenium/abstract/executors/cdp/extensions.py +0 -31
  279. osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
  280. osn_selenium/abstract/executors/cdp/fetch.py +0 -76
  281. osn_selenium/abstract/executors/cdp/file_system.py +0 -11
  282. osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
  283. osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
  284. osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
  285. osn_selenium/abstract/executors/cdp/input.py +0 -158
  286. osn_selenium/abstract/executors/cdp/inspector.py +0 -14
  287. osn_selenium/abstract/executors/cdp/io.py +0 -24
  288. osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
  289. osn_selenium/abstract/executors/cdp/log.py +0 -27
  290. osn_selenium/abstract/executors/cdp/media.py +0 -14
  291. osn_selenium/abstract/executors/cdp/memory.py +0 -61
  292. osn_selenium/abstract/executors/cdp/network.py +0 -252
  293. osn_selenium/abstract/executors/cdp/overlay.py +0 -166
  294. osn_selenium/abstract/executors/cdp/page.py +0 -347
  295. osn_selenium/abstract/executors/cdp/performance.py +0 -28
  296. osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
  297. osn_selenium/abstract/executors/cdp/preload.py +0 -14
  298. osn_selenium/abstract/executors/cdp/profiler.py +0 -54
  299. osn_selenium/abstract/executors/cdp/pwa.py +0 -46
  300. osn_selenium/abstract/executors/cdp/runtime.py +0 -176
  301. osn_selenium/abstract/executors/cdp/schema.py +0 -11
  302. osn_selenium/abstract/executors/cdp/security.py +0 -26
  303. osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
  304. osn_selenium/abstract/executors/cdp/storage.py +0 -175
  305. osn_selenium/abstract/executors/cdp/system_info.py +0 -24
  306. osn_selenium/abstract/executors/cdp/target.py +0 -125
  307. osn_selenium/abstract/executors/cdp/tethering.py +0 -14
  308. osn_selenium/abstract/executors/cdp/tracing.py +0 -48
  309. osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
  310. osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
  311. osn_selenium/executors/sync/cdp/__init__.py +0 -550
  312. osn_selenium/executors/sync/cdp/accessibility.py +0 -74
  313. osn_selenium/executors/sync/cdp/animation.py +0 -50
  314. osn_selenium/executors/sync/cdp/audits.py +0 -48
  315. osn_selenium/executors/sync/cdp/autofill.py +0 -39
  316. osn_selenium/executors/sync/cdp/background_service.py +0 -30
  317. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
  318. osn_selenium/executors/sync/cdp/browser.py +0 -131
  319. osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
  320. osn_selenium/executors/sync/cdp/cast.py +0 -38
  321. osn_selenium/executors/sync/cdp/console.py +0 -24
  322. osn_selenium/executors/sync/cdp/css.py +0 -187
  323. osn_selenium/executors/sync/cdp/debugger.py +0 -206
  324. osn_selenium/executors/sync/cdp/device_access.py +0 -27
  325. osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
  326. osn_selenium/executors/sync/cdp/dom.py +0 -310
  327. osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
  328. osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
  329. osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
  330. osn_selenium/executors/sync/cdp/emulation.py +0 -270
  331. osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
  332. osn_selenium/executors/sync/cdp/extensions.py +0 -39
  333. osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
  334. osn_selenium/executors/sync/cdp/fetch.py +0 -96
  335. osn_selenium/executors/sync/cdp/file_system.py +0 -18
  336. osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
  337. osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
  338. osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
  339. osn_selenium/executors/sync/cdp/input.py +0 -233
  340. osn_selenium/executors/sync/cdp/inspector.py +0 -21
  341. osn_selenium/executors/sync/cdp/io.py +0 -33
  342. osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
  343. osn_selenium/executors/sync/cdp/log.py +0 -35
  344. osn_selenium/executors/sync/cdp/media.py +0 -21
  345. osn_selenium/executors/sync/cdp/memory.py +0 -62
  346. osn_selenium/executors/sync/cdp/network.py +0 -287
  347. osn_selenium/executors/sync/cdp/overlay.py +0 -174
  348. osn_selenium/executors/sync/cdp/page.py +0 -365
  349. osn_selenium/executors/sync/cdp/performance.py +0 -33
  350. osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
  351. osn_selenium/executors/sync/cdp/preload.py +0 -21
  352. osn_selenium/executors/sync/cdp/profiler.py +0 -58
  353. osn_selenium/executors/sync/cdp/pwa.py +0 -55
  354. osn_selenium/executors/sync/cdp/runtime.py +0 -221
  355. osn_selenium/executors/sync/cdp/schema.py +0 -23
  356. osn_selenium/executors/sync/cdp/security.py +0 -30
  357. osn_selenium/executors/sync/cdp/service_worker.py +0 -56
  358. osn_selenium/executors/sync/cdp/storage.py +0 -151
  359. osn_selenium/executors/sync/cdp/system_info.py +0 -30
  360. osn_selenium/executors/sync/cdp/target.py +0 -147
  361. osn_selenium/executors/sync/cdp/tethering.py +0 -21
  362. osn_selenium/executors/sync/cdp/tracing.py +0 -62
  363. osn_selenium/executors/sync/cdp/web_audio.py +0 -24
  364. osn_selenium/executors/sync/cdp/web_authn.py +0 -82
  365. osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
  366. osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
  367. osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
  368. osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
  369. osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
  370. osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
  371. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
  372. osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
  373. osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
  374. osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
  375. osn_selenium/executors/trio_threads/cdp/console.py +0 -33
  376. osn_selenium/executors/trio_threads/cdp/css.py +0 -196
  377. osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
  378. osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
  379. osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
  380. osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
  381. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
  382. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
  383. osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
  384. osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
  385. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
  386. osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
  387. osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
  388. osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
  389. osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
  390. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
  391. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
  392. osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
  393. osn_selenium/executors/trio_threads/cdp/input.py +0 -242
  394. osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
  395. osn_selenium/executors/trio_threads/cdp/io.py +0 -42
  396. osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
  397. osn_selenium/executors/trio_threads/cdp/log.py +0 -44
  398. osn_selenium/executors/trio_threads/cdp/media.py +0 -30
  399. osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
  400. osn_selenium/executors/trio_threads/cdp/network.py +0 -296
  401. osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
  402. osn_selenium/executors/trio_threads/cdp/page.py +0 -374
  403. osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
  404. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
  405. osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
  406. osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
  407. osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
  408. osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
  409. osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
  410. osn_selenium/executors/trio_threads/cdp/security.py +0 -43
  411. osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
  412. osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
  413. osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
  414. osn_selenium/executors/trio_threads/cdp/target.py +0 -156
  415. osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
  416. osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
  417. osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
  418. osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
  419. osn_selenium/executors/unified/cdp/accessibility.py +0 -81
  420. osn_selenium/executors/unified/cdp/animation.py +0 -50
  421. osn_selenium/executors/unified/cdp/audits.py +0 -45
  422. osn_selenium/executors/unified/cdp/autofill.py +0 -41
  423. osn_selenium/executors/unified/cdp/background_service.py +0 -24
  424. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
  425. osn_selenium/executors/unified/cdp/browser.py +0 -143
  426. osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
  427. osn_selenium/executors/unified/cdp/cast.py +0 -32
  428. osn_selenium/executors/unified/cdp/console.py +0 -18
  429. osn_selenium/executors/unified/cdp/css.py +0 -237
  430. osn_selenium/executors/unified/cdp/debugger.py +0 -243
  431. osn_selenium/executors/unified/cdp/device_access.py +0 -21
  432. osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
  433. osn_selenium/executors/unified/cdp/dom.py +0 -380
  434. osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
  435. osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
  436. osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
  437. osn_selenium/executors/unified/cdp/emulation.py +0 -312
  438. osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
  439. osn_selenium/executors/unified/cdp/extensions.py +0 -45
  440. osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
  441. osn_selenium/executors/unified/cdp/fetch.py +0 -111
  442. osn_selenium/executors/unified/cdp/file_system.py +0 -15
  443. osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
  444. osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
  445. osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
  446. osn_selenium/executors/unified/cdp/input.py +0 -254
  447. osn_selenium/executors/unified/cdp/inspector.py +0 -15
  448. osn_selenium/executors/unified/cdp/io.py +0 -29
  449. osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
  450. osn_selenium/executors/unified/cdp/log.py +0 -29
  451. osn_selenium/executors/unified/cdp/media.py +0 -15
  452. osn_selenium/executors/unified/cdp/memory.py +0 -59
  453. osn_selenium/executors/unified/cdp/network.py +0 -323
  454. osn_selenium/executors/unified/cdp/overlay.py +0 -209
  455. osn_selenium/executors/unified/cdp/page.py +0 -410
  456. osn_selenium/executors/unified/cdp/performance.py +0 -27
  457. osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
  458. osn_selenium/executors/unified/cdp/preload.py +0 -15
  459. osn_selenium/executors/unified/cdp/profiler.py +0 -55
  460. osn_selenium/executors/unified/cdp/pwa.py +0 -55
  461. osn_selenium/executors/unified/cdp/runtime.py +0 -245
  462. osn_selenium/executors/unified/cdp/schema.py +0 -17
  463. osn_selenium/executors/unified/cdp/security.py +0 -27
  464. osn_selenium/executors/unified/cdp/service_worker.py +0 -62
  465. osn_selenium/executors/unified/cdp/storage.py +0 -178
  466. osn_selenium/executors/unified/cdp/system_info.py +0 -24
  467. osn_selenium/executors/unified/cdp/target.py +0 -165
  468. osn_selenium/executors/unified/cdp/tethering.py +0 -15
  469. osn_selenium/executors/unified/cdp/tracing.py +0 -62
  470. osn_selenium/executors/unified/cdp/web_audio.py +0 -18
  471. osn_selenium/executors/unified/cdp/web_authn.py +0 -103
  472. osn_selenium-1.0.0.dist-info/RECORD +0 -608
  473. /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
  474. /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
  475. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,85 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.chrome import ChromeFlags
5
+ from osn_selenium.webdrivers.trio_bidi.blink.lifecycle import BlinkLifecycleMixin
6
+ from osn_selenium.webdrivers.unified.chrome.lifecycle import (
7
+ UnifiedChromeLifecycleMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.chrome.lifecycle import (
10
+ AbstractChromeLifecycleMixin
11
+ )
12
+
13
+
14
+ __all__ = ["ChromeLifecycleMixin"]
15
+
16
+
17
+ class ChromeLifecycleMixin(
18
+ UnifiedChromeLifecycleMixin,
19
+ BlinkLifecycleMixin,
20
+ AbstractChromeLifecycleMixin
21
+ ):
22
+ """
23
+ Mixin for managing the lifecycle of the Chrome WebDriver.
24
+
25
+ Handles the creation, startup, shutdown, and restarting processes of the
26
+ underlying browser instance, ensuring clean session management.
27
+ """
28
+
29
+ async def start_webdriver(
30
+ self,
31
+ flags: Optional[ChromeFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: Optional[str] = None,
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect,
45
+ )
46
+ await self._start_bidi_bridge()
47
+
48
+ async def __aenter__(
49
+ self,
50
+ flags: Optional[ChromeFlags] = None,
51
+ browser_exe: Optional[PATH_TYPEHINT] = None,
52
+ browser_name_in_system: Optional[str] = None,
53
+ use_browser_exe: Optional[bool] = None,
54
+ start_page_url: Optional[str] = None,
55
+ window_rect: Optional[WindowRect] = None,
56
+ ) -> None:
57
+ await self.start_webdriver(
58
+ flags=flags,
59
+ browser_exe=browser_exe,
60
+ browser_name_in_system=browser_name_in_system,
61
+ use_browser_exe=use_browser_exe,
62
+ start_page_url=start_page_url,
63
+ window_rect=window_rect,
64
+ )
65
+
66
+ async def restart_webdriver(
67
+ self,
68
+ flags: Optional[ChromeFlags] = None,
69
+ browser_exe: Optional[PATH_TYPEHINT] = None,
70
+ browser_name_in_system: Optional[str] = None,
71
+ use_browser_exe: Optional[bool] = None,
72
+ start_page_url: Optional[str] = None,
73
+ window_rect: Optional[WindowRect] = None,
74
+ ) -> None:
75
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
76
+ flags=flags,
77
+ browser_exe=browser_exe,
78
+ browser_name_in_system=browser_name_in_system,
79
+ use_browser_exe=use_browser_exe,
80
+ start_page_url=start_page_url,
81
+ window_rect=window_rect,
82
+ )
83
+
84
+ await self._stop_bidi_bridge()
85
+ await self._start_bidi_bridge()
@@ -0,0 +1,63 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.chrome import ChromeFlags
5
+ from osn_selenium.webdrivers.trio_bidi.blink.settings import BlinkSettingsMixin
6
+ from osn_selenium.webdrivers.unified.chrome.settings import (
7
+ UnifiedChromeSettingsMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.chrome.settings import (
10
+ AbstractChromeSettingsMixin
11
+ )
12
+
13
+
14
+ __all__ = ["ChromeSettingsMixin"]
15
+
16
+
17
+ class ChromeSettingsMixin(
18
+ UnifiedChromeSettingsMixin,
19
+ BlinkSettingsMixin,
20
+ AbstractChromeSettingsMixin
21
+ ):
22
+ """
23
+ Mixin for configuring and updating settings of the Chrome WebDriver.
24
+
25
+ Provides methods to modify browser flags, window rectangles, and other
26
+ configuration parameters either before startup or during a reset.
27
+ """
28
+
29
+ async def reset_settings(
30
+ self,
31
+ flags: Optional[ChromeFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: str = "",
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._reset_settings_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect,
45
+ )
46
+
47
+ async def update_settings(
48
+ self,
49
+ flags: Optional[ChromeFlags] = None,
50
+ browser_exe: Optional[PATH_TYPEHINT] = None,
51
+ browser_name_in_system: Optional[str] = None,
52
+ use_browser_exe: Optional[bool] = None,
53
+ start_page_url: Optional[str] = None,
54
+ window_rect: Optional[WindowRect] = None,
55
+ ) -> None:
56
+ await self.sync_to_trio(sync_function=self._update_settings_impl)(
57
+ flags=flags,
58
+ browser_exe=browser_exe,
59
+ browser_name_in_system=browser_name_in_system,
60
+ use_browser_exe=use_browser_exe,
61
+ start_page_url=start_page_url,
62
+ window_rect=window_rect,
63
+ )
@@ -0,0 +1,95 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium._typehints import PATH_TYPEHINT
9
+ from osn_selenium.flags.base import BrowserFlagsManager
10
+ from osn_selenium.flags.models.base import BrowserFlags
11
+ from osn_selenium.webdrivers.trio_bidi.core.base import CoreBaseMixin
12
+ from osn_selenium.webdrivers.trio_bidi.core.script import CoreScriptMixin
13
+ from osn_selenium.webdrivers.trio_bidi.core.window import CoreWindowMixin
14
+ from osn_selenium.abstract.webdriver.core import (
15
+ AbstractCoreWebDriver
16
+ )
17
+ from osn_selenium.webdrivers.trio_bidi.core.actions import CoreActionsMixin
18
+ from osn_selenium.webdrivers.trio_bidi.core.capture import CoreCaptureMixin
19
+ from osn_selenium.webdrivers.trio_bidi.core.element import CoreElementMixin
20
+ from osn_selenium.webdrivers.trio_bidi.core.devtools import CoreDevToolsMixin
21
+ from osn_selenium.webdrivers.trio_bidi.core.settings import CoreSettingsMixin
22
+ from osn_selenium.webdrivers.trio_bidi.core.lifecycle import CoreLifecycleMixin
23
+ from osn_selenium.webdrivers.trio_bidi.core.navigation import CoreNavigationMixin
24
+
25
+
26
+ __all__ = ["CoreWebDriver"]
27
+
28
+
29
+ class CoreWebDriver(
30
+ CoreActionsMixin,
31
+ CoreBaseMixin,
32
+ CoreCaptureMixin,
33
+ CoreDevToolsMixin,
34
+ CoreElementMixin,
35
+ CoreLifecycleMixin,
36
+ CoreNavigationMixin,
37
+ CoreScriptMixin,
38
+ CoreSettingsMixin,
39
+ CoreWindowMixin,
40
+ AbstractCoreWebDriver,
41
+ ):
42
+ """
43
+ Concrete Core WebDriver implementation combining all functional mixins.
44
+
45
+ This class aggregates lifecycle management, element interaction, navigation,
46
+ and browser-specific features into a single usable driver instance.
47
+ """
48
+
49
+ def __init__(
50
+ self,
51
+ webdriver_path: str,
52
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
53
+ flags: Optional[BrowserFlags] = None,
54
+ implicitly_wait: int = 5,
55
+ page_load_timeout: int = 5,
56
+ script_timeout: int = 5,
57
+ window_rect: Optional[WindowRect] = None,
58
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
59
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
60
+ ignore_cdp_version_package_missing: bool = True,
61
+ ) -> None:
62
+ """
63
+ Initializes the main WebDriver instance with Trio thread support.
64
+
65
+ Args:
66
+ webdriver_path (str): The file path to the WebDriver executable.
67
+ flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
68
+ browser-specific configuration flags. Defaults to BrowserFlagsManager.
69
+ flags (Optional[BrowserFlags]): Initial set of browser flags or options
70
+ to apply upon startup. Defaults to None.
71
+ implicitly_wait (int): The amount of time (in seconds) that the driver should
72
+ wait when searching for elements. Defaults to 5.
73
+ page_load_timeout (int): The amount of time (in seconds) to wait for a page
74
+ load to complete. Defaults to 5.
75
+ script_timeout (int): The amount of time (in seconds) to wait for an
76
+ asynchronous script to finish execution. Defaults to 5.
77
+ window_rect (Optional[WindowRect]): The initial size and position of the
78
+ browser window. Defaults to None.
79
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
80
+ throttle concurrent thread-based operations. Defaults to None.
81
+ """
82
+
83
+ CoreBaseMixin.__init__(
84
+ self,
85
+ webdriver_path=webdriver_path,
86
+ flags_manager_type=flags_manager_type,
87
+ flags=flags,
88
+ implicitly_wait=implicitly_wait,
89
+ page_load_timeout=page_load_timeout,
90
+ script_timeout=script_timeout,
91
+ window_rect=window_rect,
92
+ capacity_limiter=capacity_limiter,
93
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
94
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
95
+ )
@@ -0,0 +1,70 @@
1
+ from typing_extensions import deprecated
2
+ from typing import (
3
+ Iterable,
4
+ List,
5
+ Optional
6
+ )
7
+ from osn_selenium._typehints import DEVICES_TYPEHINT
8
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
9
+ from osn_selenium.webdrivers.trio_bidi.core.script import CoreScriptMixin
10
+ from osn_selenium.instances.trio_bidi.web_driver_wait import WebDriverWait
11
+ from osn_selenium.instances.convert import (
12
+ get_trio_bidi_instance_wrapper
13
+ )
14
+ from osn_selenium.webdrivers.unified.core.actions import (
15
+ UnifiedCoreActionsMixin
16
+ )
17
+ from osn_selenium.abstract.webdriver.core.actions import (
18
+ AbstractCoreActionsMixin
19
+ )
20
+ from osn_selenium.exceptions.experimental import (
21
+ NotImplementedExperimentalFeatureError
22
+ )
23
+
24
+
25
+ __all__ = ["CoreActionsMixin"]
26
+
27
+
28
+ class CoreActionsMixin(
29
+ UnifiedCoreActionsMixin,
30
+ CoreScriptMixin,
31
+ TrioBiDiMixin,
32
+ AbstractCoreActionsMixin
33
+ ):
34
+ """
35
+ Mixin providing high-level interaction capabilities for Core WebDrivers.
36
+
37
+ Includes factories for standard and human-like ActionChains, as well as
38
+ custom WebDriverWait implementations.
39
+ """
40
+
41
+ @deprecated(
42
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
43
+ )
44
+ def action_chains(
45
+ self,
46
+ duration: int = 250,
47
+ devices: Optional[List[DEVICES_TYPEHINT]] = None,
48
+ ):
49
+ raise NotImplementedExperimentalFeatureError(name="CoreActionsMixin.action_chains")
50
+
51
+ def web_driver_wait(
52
+ self,
53
+ timeout: float,
54
+ poll_frequency: float = 0.5,
55
+ ignored_exceptions: Optional[Iterable[BaseException]] = None,
56
+ ) -> WebDriverWait:
57
+ legacy = self._web_driver_wait_impl(
58
+ timeout=timeout,
59
+ poll_frequency=poll_frequency,
60
+ ignored_exceptions=ignored_exceptions
61
+ )
62
+
63
+ return get_trio_bidi_instance_wrapper(
64
+ wrapper_class=WebDriverWait,
65
+ legacy_object=legacy,
66
+ lock=self._lock,
67
+ limiter=self._capacity_limiter,
68
+ trio_token=self._trio_token,
69
+ bidi_buffer_size=self._trio_bidi_buffer_size,
70
+ )
@@ -0,0 +1,200 @@
1
+ import math
2
+ import trio
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
5
+ from osn_selenium.flags.base import BrowserFlagsManager
6
+ from osn_selenium.flags.models.base import BrowserFlags
7
+ from selenium.webdriver.common.bidi.session import Session
8
+ from selenium.webdriver.remote.errorhandler import ErrorHandler
9
+ from osn_selenium.executors.trio_bidi.javascript import JSExecutor
10
+ from selenium.webdriver.remote.locator_converter import LocatorConverter
11
+ from osn_selenium.webdrivers._bridges import (
12
+ get_js_executor_bridge
13
+ )
14
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
15
+ from typing import (
16
+ Any,
17
+ Dict,
18
+ Mapping,
19
+ Optional,
20
+ Type,
21
+ Union,
22
+ cast
23
+ )
24
+ from osn_selenium._typehints import (
25
+ ARCHITECTURES_TYPEHINT,
26
+ PATH_TYPEHINT
27
+ )
28
+ from osn_selenium.abstract.webdriver.core.base import (
29
+ AbstractCoreBaseMixin
30
+ )
31
+ from selenium.webdriver.remote.webdriver import (
32
+ WebDriver as legacyWebDriver
33
+ )
34
+ from osn_selenium.trio_bidi.remote_connection import (
35
+ BiDiBridgeRemoteConnection
36
+ )
37
+
38
+
39
+ __all__ = ["CoreBaseMixin"]
40
+
41
+
42
+ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioBiDiMixin, AbstractCoreBaseMixin):
43
+ """
44
+ This class serves as the foundation for browser-specific implementations, managing
45
+ the WebDriver executable path, configuration flags, timeouts, and the active
46
+ driver instance.
47
+ """
48
+
49
+ def __init__(
50
+ self,
51
+ webdriver_path: str,
52
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
53
+ flags: Optional[BrowserFlags] = None,
54
+ implicitly_wait: int = 5,
55
+ page_load_timeout: int = 5,
56
+ script_timeout: int = 5,
57
+ window_rect: Optional[WindowRect] = None,
58
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
59
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
60
+ ignore_cdp_version_package_missing: bool = True,
61
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
62
+ bidi_buffer_size: Union[int, float] = math.inf,
63
+ ) -> None:
64
+ """
65
+ Initializes the base mixin for Trio-based WebDrivers.
66
+
67
+ Sets up the core synchronization primitives, default timeouts,
68
+ and the browser flag manager.
69
+
70
+ Args:
71
+ webdriver_path (str): The file path to the WebDriver executable.
72
+ flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
73
+ browser-specific configuration flags. Defaults to BrowserFlagsManager.
74
+ flags (Optional[BrowserFlags]): Initial set of browser flags or options
75
+ to apply upon startup. Defaults to None.
76
+ implicitly_wait (int): The amount of time (in seconds) that the driver should
77
+ wait when searching for elements. Defaults to 5.
78
+ page_load_timeout (int): The amount of time (in seconds) to wait for a page
79
+ load to complete. Defaults to 5.
80
+ script_timeout (int): The amount of time (in seconds) to wait for an
81
+ asynchronous script to finish execution. Defaults to 5.
82
+ window_rect (Optional[WindowRect]): The initial size and position of the
83
+ browser window. Defaults to None.
84
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
85
+ throttle concurrent thread-based operations. Defaults to None.
86
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
87
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
88
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
89
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
90
+ """
91
+
92
+ UnifiedCoreBaseMixin.__init__(
93
+ self,
94
+ webdriver_path=webdriver_path,
95
+ architecture="trio_bidi",
96
+ flags_manager_type=flags_manager_type,
97
+ flags=flags,
98
+ implicitly_wait=implicitly_wait,
99
+ page_load_timeout=page_load_timeout,
100
+ script_timeout=script_timeout,
101
+ window_rect=window_rect,
102
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
103
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
104
+ )
105
+
106
+ TrioBiDiMixin.__init__(
107
+ self,
108
+ lock=trio.Lock(),
109
+ limiter=capacity_limiter
110
+ if capacity_limiter is not None
111
+ else trio.CapacityLimiter(100),
112
+ token=trio_token,
113
+ buffer_size=bidi_buffer_size,
114
+ )
115
+
116
+ self._js_executor = JSExecutor(
117
+ execute_function=get_js_executor_bridge(self),
118
+ lock=self._lock,
119
+ limiter=self._capacity_limiter,
120
+ trio_token=trio_token,
121
+ bidi_buffer_size=bidi_buffer_size,
122
+ )
123
+
124
+ @property
125
+ def architecture(self) -> ARCHITECTURES_TYPEHINT:
126
+ return self._architecture_impl
127
+
128
+ @property
129
+ def capabilities(self) -> Dict[str, Any]:
130
+ return self._capabilities_impl()
131
+
132
+ @property
133
+ def caps(self) -> Dict[str, Any]:
134
+ return self._caps_get_impl()
135
+
136
+ @caps.setter
137
+ def caps(self, value: Dict[str, Any]) -> None:
138
+ self._caps_set_impl(value=value)
139
+
140
+ @property
141
+ def command_executor(self) -> BiDiBridgeRemoteConnection:
142
+ return cast(BiDiBridgeRemoteConnection, self._command_executor_get_impl())
143
+
144
+ @command_executor.setter
145
+ def command_executor(self, value: BiDiBridgeRemoteConnection) -> None:
146
+ self._command_executor_set_impl(value=value)
147
+
148
+ @property
149
+ def driver(self) -> Optional[legacyWebDriver]:
150
+ return self._driver_impl
151
+
152
+ @property
153
+ def error_handler(self) -> ErrorHandler:
154
+ return self._error_handler_get_impl()
155
+
156
+ @error_handler.setter
157
+ def error_handler(self, value: ErrorHandler) -> None:
158
+ self._error_handler_set_impl(value=value)
159
+
160
+ async def execute(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
161
+ return await self.sync_to_trio(sync_function=self._execute_impl)(driver_command=driver_command, params=params)
162
+
163
+ @property
164
+ def is_active(self) -> bool:
165
+ return self._is_active_impl
166
+
167
+ @property
168
+ def javascript(self) -> JSExecutor:
169
+ return self._js_executor
170
+
171
+ @property
172
+ def locator_converter(self) -> LocatorConverter:
173
+ return self._locator_converter_get_impl()
174
+
175
+ @locator_converter.setter
176
+ def locator_converter(self, value: LocatorConverter) -> None:
177
+ self._locator_converter_set_impl(value=value)
178
+
179
+ @property
180
+ def name(self) -> str:
181
+ return self._name_impl()
182
+
183
+ @property
184
+ def pinned_scripts(self) -> Dict[str, Any]:
185
+ return self._pinned_scripts_get_impl()
186
+
187
+ @pinned_scripts.setter
188
+ def pinned_scripts(self, value: Dict[str, Any]) -> None:
189
+ self._pinned_scripts_set_impl(value=value)
190
+
191
+ async def session(self) -> Session:
192
+ return await self.sync_to_trio(sync_function=self._session_impl)()
193
+
194
+ @property
195
+ def session_id(self) -> Optional[str]:
196
+ return self._session_id_get_impl()
197
+
198
+ @session_id.setter
199
+ def session_id(self, value: Optional[str]) -> None:
200
+ self._session_id_set_impl(value=value)
@@ -0,0 +1,39 @@
1
+ from typing import Optional
2
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
3
+ from selenium.webdriver.common.print_page_options import PrintOptions
4
+ from osn_selenium.webdrivers.unified.core.capture import (
5
+ UnifiedCoreCaptureMixin
6
+ )
7
+ from osn_selenium.abstract.webdriver.core.capture import (
8
+ AbstractCoreCaptureMixin
9
+ )
10
+
11
+
12
+ __all__ = ["CoreCaptureMixin"]
13
+
14
+
15
+ class CoreCaptureMixin(UnifiedCoreCaptureMixin, TrioBiDiMixin, AbstractCoreCaptureMixin):
16
+ """
17
+ Mixin enabling screen capture and page source retrieval for Core WebDrivers.
18
+
19
+ Offers methods to take screenshots (file, base64, png), print pages,
20
+ and extract the current DOM source.
21
+ """
22
+
23
+ async def get_screenshot_as_base64(self) -> str:
24
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_base64_impl)()
25
+
26
+ async def get_screenshot_as_file(self, filename: str) -> bool:
27
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_file_impl)(filename=filename)
28
+
29
+ async def get_screenshot_as_png(self) -> bytes:
30
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_png_impl)()
31
+
32
+ async def page_source(self) -> str:
33
+ return await self.sync_to_trio(sync_function=self._page_source_impl)()
34
+
35
+ async def print_page(self, print_options: Optional[PrintOptions] = None) -> str:
36
+ return await self.sync_to_trio(sync_function=self._print_page_impl)(print_options=print_options)
37
+
38
+ async def save_screenshot(self, filename: str) -> bool:
39
+ return await self.sync_to_trio(sync_function=self._save_screenshot_impl)(filename=filename)
@@ -0,0 +1,49 @@
1
+ from typing_extensions import deprecated
2
+ from contextlib import asynccontextmanager
3
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
4
+ from typing import (
5
+ Any,
6
+ AsyncGenerator,
7
+ Dict,
8
+ Tuple
9
+ )
10
+ from selenium.webdriver.remote.bidi_connection import BidiConnection
11
+ from selenium.webdriver.remote.websocket_connection import WebSocketConnection
12
+ from osn_selenium.webdrivers.unified.core.devtools import (
13
+ UnifiedCoreDevToolsMixin
14
+ )
15
+ from osn_selenium.abstract.webdriver.core.devtools import (
16
+ AbstractCoreDevToolsMixin
17
+ )
18
+ from osn_selenium.exceptions.experimental import (
19
+ NotImplementedExperimentalFeatureError
20
+ )
21
+
22
+
23
+ __all__ = ["CoreDevToolsMixin"]
24
+
25
+
26
+ class CoreDevToolsMixin(UnifiedCoreDevToolsMixin, TrioBiDiMixin, AbstractCoreDevToolsMixin):
27
+ """
28
+ Mixin for Chrome DevTools Protocol (CDP) and BiDi interactions in Core WebDrivers.
29
+
30
+ Facilitates low-level browser control via CDP commands, network interception,
31
+ and bidirectional communication sessions.
32
+ """
33
+
34
+ @asynccontextmanager
35
+ async def bidi_connection(self) -> AsyncGenerator[BidiConnection, Any]:
36
+ async with self._bidi_connection_impl() as bidi:
37
+ yield bidi
38
+
39
+ async def execute_cdp_cmd(self, cmd: str, cmd_args: Dict[str, Any]) -> Any:
40
+ return await self.sync_to_trio(sync_function=self._execute_cdp_cmd_impl)(cmd=cmd, cmd_args=cmd_args)
41
+
42
+ @deprecated(
43
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
44
+ )
45
+ async def network(self):
46
+ raise NotImplementedExperimentalFeatureError(name="CoreDevToolsMixin.network")
47
+
48
+ async def start_devtools(self) -> Tuple[Any, WebSocketConnection]:
49
+ return await self.sync_to_trio(sync_function=self._start_devtools_impl)()
@@ -0,0 +1,64 @@
1
+ from typing import List, Optional
2
+ from selenium.webdriver.common.by import By
3
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
4
+ from osn_selenium.instances.trio_bidi.web_element import WebElement
5
+ from osn_selenium.instances.convert import (
6
+ get_trio_bidi_instance_wrapper
7
+ )
8
+ from osn_selenium.webdrivers.unified.core.element import (
9
+ UnifiedCoreElementMixin
10
+ )
11
+ from osn_selenium.abstract.webdriver.core.element import (
12
+ AbstractCoreElementMixin
13
+ )
14
+
15
+
16
+ __all__ = ["CoreElementMixin"]
17
+
18
+
19
+ class CoreElementMixin(UnifiedCoreElementMixin, TrioBiDiMixin, AbstractCoreElementMixin):
20
+ """
21
+ Mixin for DOM element retrieval in Core WebDrivers.
22
+
23
+ Provides standard methods to locate single or multiple elements within
24
+ the current page context.
25
+ """
26
+
27
+ async def create_web_element(self, element_id: str) -> WebElement:
28
+ legacy = await self.sync_to_trio(sync_function=self._create_web_element_impl)(element_id=element_id)
29
+
30
+ return get_trio_bidi_instance_wrapper(
31
+ wrapper_class=WebElement,
32
+ legacy_object=legacy,
33
+ lock=self._lock,
34
+ limiter=self._capacity_limiter,
35
+ trio_token=self._trio_token,
36
+ bidi_buffer_size=self._trio_bidi_buffer_size,
37
+ )
38
+
39
+ async def find_element(self, by: str = By.ID, value: Optional[str] = None) -> WebElement:
40
+ legacy = await self.sync_to_trio(sync_function=self._find_element_impl)(by=by, value=value)
41
+
42
+ return get_trio_bidi_instance_wrapper(
43
+ wrapper_class=WebElement,
44
+ legacy_object=legacy,
45
+ lock=self._lock,
46
+ limiter=self._capacity_limiter,
47
+ trio_token=self._trio_token,
48
+ bidi_buffer_size=self._trio_bidi_buffer_size,
49
+ )
50
+
51
+ async def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> List[WebElement]:
52
+ legacy_elements = await self.sync_to_trio(sync_function=self._find_elements_impl)(by=by, value=value)
53
+
54
+ return [
55
+ get_trio_bidi_instance_wrapper(
56
+ wrapper_class=WebElement,
57
+ legacy_object=element,
58
+ lock=self._lock,
59
+ limiter=self._capacity_limiter,
60
+ trio_token=self._trio_token,
61
+ bidi_buffer_size=self._trio_bidi_buffer_size,
62
+ )
63
+ for element in legacy_elements
64
+ ]