seleniumbase 4.32.0__tar.gz → 4.32.2__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. {seleniumbase-4.32.0/seleniumbase.egg-info → seleniumbase-4.32.2}/PKG-INFO +1 -1
  2. seleniumbase-4.32.2/examples/verify_undetected.py +17 -0
  3. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/pyproject.toml +1 -0
  4. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/__version__.py +1 -1
  5. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/browser_launcher.py +1 -3
  6. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/base_case.py +87 -49
  7. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/driver_manager.py +13 -4
  8. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/sb_manager.py +0 -24
  9. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/__init__.py +5 -2
  10. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/__init__.py +1 -0
  11. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/_contradict.py +110 -0
  12. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/browser.py +830 -0
  13. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/cdp_util.py +317 -0
  14. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/config.py +322 -0
  15. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/connection.py +625 -0
  16. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/element.py +1150 -0
  17. seleniumbase-4.32.2/seleniumbase/undetected/cdp_driver/tab.py +1319 -0
  18. {seleniumbase-4.32.0 → seleniumbase-4.32.2/seleniumbase.egg-info}/PKG-INFO +1 -1
  19. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase.egg-info/SOURCES.txt +8 -0
  20. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/setup.py +1 -0
  21. seleniumbase-4.32.0/examples/verify_undetected.py +0 -23
  22. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/.gitignore +0 -0
  23. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/LICENSE +0 -0
  24. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/MANIFEST.in +0 -0
  25. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/README.md +0 -0
  26. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/__init__.py +0 -0
  27. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/basic_test.py +0 -0
  28. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/__init__.py +0 -0
  29. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/__init__.py +0 -0
  30. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/environment.py +0 -0
  31. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/steps/__init__.py +0 -0
  32. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/steps/calculator.py +0 -0
  33. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  34. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/steps/imported.py +0 -0
  35. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  36. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/__init__.py +0 -0
  37. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/base_test_case.py +0 -0
  38. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/boilerplate_test.py +0 -0
  39. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/classic_obj_test.py +0 -0
  40. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/page_objects.py +0 -0
  41. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/__init__.py +0 -0
  42. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  43. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  44. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/google_objects.py +0 -0
  45. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/google_test.py +0 -0
  46. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  47. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  48. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/samples/test_page_objects.py +0 -0
  49. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/boilerplates/sb_fixture_test.py +0 -0
  50. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/capabilities/mac_cap_file.py +0 -0
  51. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/capabilities/sample_cap_file_BS.py +0 -0
  52. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/capabilities/sample_cap_file_SL.py +0 -0
  53. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/capabilities/selenoid_cap_file.py +0 -0
  54. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/capabilities/win10_cap_file.py +0 -0
  55. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/chart_presentation.py +0 -0
  56. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/my_chart.py +0 -0
  57. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/pie_charts.py +0 -0
  58. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/test_area_chart.py +0 -0
  59. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/test_display_chart.py +0 -0
  60. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/test_line_chart.py +0 -0
  61. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/test_multi_series.py +0 -0
  62. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/chart_maker/test_save_chart.py +0 -0
  63. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/coffee_cart_tests.py +0 -0
  64. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/custom_settings.py +0 -0
  65. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/desktop_apps/recorder.py +0 -0
  66. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  67. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/edge_test.py +0 -0
  68. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/github_test.py +0 -0
  69. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/gui_test_runner.py +0 -0
  70. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/hack_the_planet.py +0 -0
  71. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/handle_alert_test.py +0 -0
  72. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/iframe_tests.py +0 -0
  73. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/locale_code_test.py +0 -0
  74. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/master_qa/__init__.py +0 -0
  75. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  76. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/master_qa/masterqa_test_1.py +0 -0
  77. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/__init__.py +0 -0
  78. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/protractor/__init__.py +0 -0
  79. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/protractor/example_test.py +0 -0
  80. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/protractor/input_test.py +0 -0
  81. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/protractor/mat_paginator_test.py +0 -0
  82. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/__init__.py +0 -0
  83. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  84. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  85. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/messy_raw.py +0 -0
  86. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/refined_raw.py +0 -0
  87. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  88. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/my_first_test.py +0 -0
  89. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/nth_child_test.py +0 -0
  90. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/__init__.py +0 -0
  91. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/load_html_test.py +0 -0
  92. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/test_demo_page.py +0 -0
  93. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/test_extended_driver.py +0 -0
  94. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/test_handle_alerts.py +0 -0
  95. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/test_request_fixture.py +0 -0
  96. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/offline_examples/test_user_agent.py +0 -0
  97. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/old_wordle_script.py +0 -0
  98. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/parameterized_test.py +0 -0
  99. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/performance_test.py +0 -0
  100. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/core_presentation.py +0 -0
  101. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/edge_presentation.py +0 -0
  102. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/fundamentals.py +0 -0
  103. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/multi_uc.py +0 -0
  104. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/my_presentation.py +0 -0
  105. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/py_virtual_envs.py +0 -0
  106. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/uc_presentation.py +0 -0
  107. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/presenter/uc_presentation_3.py +0 -0
  108. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/proxy_test.py +0 -0
  109. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/rate_limiting_test.py +0 -0
  110. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_ahrefs.py +0 -0
  111. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_antibot_login.py +0 -0
  112. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_bing_captcha.py +0 -0
  113. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_block.py +0 -0
  114. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_brotector_captcha.py +0 -0
  115. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_call.py +0 -0
  116. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_cdp_logging.py +0 -0
  117. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_cf.py +0 -0
  118. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_cookies.py +0 -0
  119. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_detection.py +0 -0
  120. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_driver_context.py +0 -0
  121. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_driver_manager.py +0 -0
  122. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_file_call.py +0 -0
  123. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_form_turnstile.py +0 -0
  124. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_games.py +0 -0
  125. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_gui_click.py +0 -0
  126. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_hobbit.py +0 -0
  127. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_login_context.py +0 -0
  128. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_login_driver.py +0 -0
  129. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_login_sb.py +0 -0
  130. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_main_call.py +0 -0
  131. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_mobile.py +0 -0
  132. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_multi_drivers.py +0 -0
  133. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_nopecha.py +0 -0
  134. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_order_tickets.py +0 -0
  135. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_parameter_script.py +0 -0
  136. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_performance_logs.py +0 -0
  137. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_pixelscan.py +0 -0
  138. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_pyautogui.py +0 -0
  139. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_recaptcha.py +0 -0
  140. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_robot.py +0 -0
  141. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_sb.py +0 -0
  142. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_test_scripts.py +0 -0
  143. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_turnstile.py +0 -0
  144. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/raw_uc_mode.py +0 -0
  145. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/sb_fixture_tests.py +0 -0
  146. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/shadow_root_test.py +0 -0
  147. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/swag_labs_user_tests.py +0 -0
  148. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_3d_apis.py +0 -0
  149. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_apple_site.py +0 -0
  150. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_assert_elements.py +0 -0
  151. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_calculator.py +0 -0
  152. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_canvas.py +0 -0
  153. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_cdp_ad_blocking.py +0 -0
  154. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_checkboxes.py +0 -0
  155. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_chinese_pdf.py +0 -0
  156. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_chromedriver.py +0 -0
  157. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_coffee_cart.py +0 -0
  158. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_console_logging.py +0 -0
  159. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_contains_selector.py +0 -0
  160. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_cycle_elements.py +0 -0
  161. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_decryption.py +0 -0
  162. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_deferred_asserts.py +0 -0
  163. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_demo_site.py +0 -0
  164. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_detect_404s.py +0 -0
  165. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_docs_site.py +0 -0
  166. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_double_click.py +0 -0
  167. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_download_files.py +0 -0
  168. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_download_images.py +0 -0
  169. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_drag_and_drop.py +0 -0
  170. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_error_page.py +0 -0
  171. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_event_firing.py +0 -0
  172. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_fail.py +0 -0
  173. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_geolocation.py +0 -0
  174. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_get_coffee.py +0 -0
  175. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_get_locale_code.py +0 -0
  176. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_get_pdf_text.py +0 -0
  177. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_get_user_agent.py +0 -0
  178. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_hack_search.py +0 -0
  179. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_highlight_elements.py +0 -0
  180. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_image_saving.py +0 -0
  181. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_inspect_html.py +0 -0
  182. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_login.py +0 -0
  183. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_markers.py +0 -0
  184. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_mfa_login.py +0 -0
  185. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_multiple_drivers.py +0 -0
  186. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_null.py +0 -0
  187. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_override_driver.py +0 -0
  188. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_override_sb_fixture.py +0 -0
  189. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_parse_soup.py +0 -0
  190. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_pdf_asserts.py +0 -0
  191. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_pytest_parametrize.py +0 -0
  192. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_repeat_tests.py +0 -0
  193. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_request_sb_fixture.py +0 -0
  194. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_save_screenshots.py +0 -0
  195. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_sb_fixture.py +0 -0
  196. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_scrape_bing.py +0 -0
  197. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_select_options.py +0 -0
  198. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_shadow_dom.py +0 -0
  199. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_show_file_choosers.py +0 -0
  200. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_simple_login.py +0 -0
  201. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_skype_site.py +0 -0
  202. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_suite.py +0 -0
  203. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_swag_labs.py +0 -0
  204. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_tinymce.py +0 -0
  205. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_todomvc.py +0 -0
  206. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_url_asserts.py +0 -0
  207. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_usefixtures.py +0 -0
  208. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_verify_chromedriver.py +0 -0
  209. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_window_switching.py +0 -0
  210. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_xfail.py +0 -0
  211. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/test_xkcd.py +0 -0
  212. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/time_limit_test.py +0 -0
  213. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  214. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  215. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  216. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/google_tour.py +0 -0
  217. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  218. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/introjs_google_tour.py +0 -0
  219. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/maps_introjs_tour.py +0 -0
  220. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/octocat_tour.py +0 -0
  221. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/recordings/__init__.py +0 -0
  222. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -0
  223. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/shepherd_google_tour.py +0 -0
  224. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/tour_examples/xkcd_tour.py +0 -0
  225. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/chinese_test_1.py +0 -0
  226. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/dutch_test_1.py +0 -0
  227. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/english_test_1.py +0 -0
  228. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/french_test_1.py +0 -0
  229. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/italian_test_1.py +0 -0
  230. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/japanese_test_1.py +0 -0
  231. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/korean_test_1.py +0 -0
  232. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/portuguese_test_1.py +0 -0
  233. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/russian_test_1.py +0 -0
  234. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/translations/spanish_test_1.py +0 -0
  235. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/uc_cdp_events.py +0 -0
  236. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/unit_tests/verify_framework.py +0 -0
  237. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/upgrade_chromedriver.py +0 -0
  238. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/upload_file_test.py +0 -0
  239. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/user_agent_test.py +0 -0
  240. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/visual_testing/__init__.py +0 -0
  241. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/visual_testing/layout_test.py +0 -0
  242. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/visual_testing/python_home_test.py +0 -0
  243. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/visual_testing/test_layout_fail.py +0 -0
  244. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/visual_testing/xkcd_visual_test.py +0 -0
  245. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/wordle_test.py +0 -0
  246. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/xpath_test.py +0 -0
  247. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/examples/youtube_search_test.py +0 -0
  248. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/install.sh +0 -0
  249. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/__init__.py +0 -0
  250. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/__init__.py +0 -0
  251. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/environment.py +0 -0
  252. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/steps/__init__.py +0 -0
  253. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/steps/calculator.py +0 -0
  254. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/steps/fail_page.py +0 -0
  255. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/steps/real_world.py +0 -0
  256. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/behave/features/steps/swag_labs.py +0 -0
  257. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/brython/index.py +0 -0
  258. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/node_js/__init__.py +0 -0
  259. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/node_js/my_first_test.py +0 -0
  260. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/integrations/node_js/test_demo_site.py +0 -0
  261. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/mkdocs_build/prepare.py +0 -0
  262. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/pytest.ini +0 -0
  263. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/requirements.txt +0 -0
  264. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/sbase/__init__.py +0 -0
  265. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/sbase/__main__.py +0 -0
  266. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/sbase/steps.py +0 -0
  267. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/__init__.py +0 -0
  268. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/__main__.py +0 -0
  269. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/behave/__init__.py +0 -0
  270. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/behave/behave_helper.py +0 -0
  271. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/behave/behave_sb.py +0 -0
  272. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/behave/steps.py +0 -0
  273. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/__init__.py +0 -0
  274. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/decorators.py +0 -0
  275. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/encryption.py +0 -0
  276. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/exceptions.py +0 -0
  277. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/obfuscate.py +0 -0
  278. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/common/unobfuscate.py +0 -0
  279. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/config/__init__.py +0 -0
  280. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/config/ad_block_list.py +0 -0
  281. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/config/proxy_list.py +0 -0
  282. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/config/settings.py +0 -0
  283. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/__init__.py +0 -0
  284. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/logo_helper.py +0 -0
  285. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
  286. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/run.py +0 -0
  287. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  288. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  289. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
  290. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_install.py +0 -0
  291. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  292. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  293. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  294. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  295. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  296. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  297. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_print.py +0 -0
  298. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  299. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/__init__.py +0 -0
  300. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/application_manager.py +0 -0
  301. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/capabilities_parser.py +0 -0
  302. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/colored_traceback.py +0 -0
  303. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/create_db_tables.sql +0 -0
  304. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/detect_b_ver.py +0 -0
  305. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/download_helper.py +0 -0
  306. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/encoded_images.py +0 -0
  307. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/jqc_helper.py +0 -0
  308. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/log_helper.py +0 -0
  309. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/mysql.py +0 -0
  310. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/proxy_helper.py +0 -0
  311. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/recorder_helper.py +0 -0
  312. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/report_helper.py +0 -0
  313. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/s3_manager.py +0 -0
  314. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/sb_cdp.py +0 -0
  315. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/sb_driver.py +0 -0
  316. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/session_helper.py +0 -0
  317. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/settings_parser.py +0 -0
  318. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/style_sheet.py +0 -0
  319. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/testcase_manager.py +0 -0
  320. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/tour_helper.py +0 -0
  321. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/core/visual_helper.py +0 -0
  322. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/drivers/__init__.py +0 -0
  323. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/extensions/__init__.py +0 -0
  324. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/extensions/ad_block.zip +0 -0
  325. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/extensions/disable_csp.zip +0 -0
  326. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/extensions/recorder.zip +0 -0
  327. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
  328. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/__init__.py +0 -0
  329. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/constants.py +0 -0
  330. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  331. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/errors.py +0 -0
  332. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/js_utils.py +0 -0
  333. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/page_actions.py +0 -0
  334. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/page_utils.py +0 -0
  335. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/shared_utils.py +0 -0
  336. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
  337. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/words.py +0 -0
  338. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  339. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/js_code/__init__.py +0 -0
  340. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/js_code/active_css_js.py +0 -0
  341. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/js_code/live_js.py +0 -0
  342. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/js_code/recorder_js.py +0 -0
  343. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/masterqa/__init__.py +0 -0
  344. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/masterqa/master_qa.py +0 -0
  345. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/__init__.py +0 -0
  346. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/base_plugin.py +0 -0
  347. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/basic_test_info.py +0 -0
  348. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  349. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/page_source.py +0 -0
  350. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/pytest_plugin.py +0 -0
  351. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  352. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/screen_shots.py +0 -0
  353. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/plugins/selenium_plugin.py +0 -0
  354. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/resources/__init__.py +0 -0
  355. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/__init__.py +0 -0
  356. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/chinese.py +0 -0
  357. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/dutch.py +0 -0
  358. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/french.py +0 -0
  359. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/italian.py +0 -0
  360. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/japanese.py +0 -0
  361. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/korean.py +0 -0
  362. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/master_dict.py +0 -0
  363. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/portuguese.py +0 -0
  364. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/russian.py +0 -0
  365. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/spanish.py +0 -0
  366. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/translate/translator.py +0 -0
  367. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/cdp.py +0 -0
  368. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/dprocess.py +0 -0
  369. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/options.py +0 -0
  370. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/patcher.py +0 -0
  371. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/reactor.py +0 -0
  372. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/undetected/webelement.py +0 -0
  373. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/__init__.py +0 -0
  374. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  375. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  376. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  377. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  378. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  379. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  380. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  381. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  382. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  383. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  384. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  385. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  386. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  387. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
  388. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase.egg-info/entry_points.txt +0 -0
  389. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase.egg-info/requires.txt +0 -0
  390. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/seleniumbase.egg-info/top_level.txt +0 -0
  391. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/setup.cfg +0 -0
  392. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/site/prepare.py +0 -0
  393. {seleniumbase-4.32.0 → seleniumbase-4.32.2}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.32.0
3
+ Version: 4.32.2
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -0,0 +1,17 @@
1
+ """Determine if your browser is detectable by anti-bot services.
2
+ Some sites use scripts to detect Selenium, and then block you.
3
+ To evade detection, add --uc as a pytest command-line option."""
4
+ from seleniumbase import BaseCase
5
+ BaseCase.main(__name__, __file__, "--uc", "-s")
6
+
7
+
8
+ class UndetectedTest(BaseCase):
9
+ def test_browser_is_undetected(self):
10
+ url = "https://gitlab.com/users/sign_in"
11
+ if not self.undetectable:
12
+ self.get_new_driver(undetectable=True)
13
+ self.activate_cdp_mode(url)
14
+ self.uc_gui_click_captcha()
15
+ self.assert_text("Username", '[for="user_login"]', timeout=3)
16
+ self.post_message("SeleniumBase wasn't detected", duration=4)
17
+ self._print("\n Success! Website did not detect Selenium! ")
@@ -49,6 +49,7 @@ packages = [
49
49
  "seleniumbase.resources",
50
50
  "seleniumbase.translate",
51
51
  "seleniumbase.undetected",
52
+ "seleniumbase.undetected.cdp_driver",
52
53
  "seleniumbase.utilities",
53
54
  "seleniumbase.utilities.selenium_grid",
54
55
  "seleniumbase.utilities.selenium_ide",
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.32.0"
2
+ __version__ = "4.32.2"
@@ -525,9 +525,6 @@ def uc_open_with_cdp_mode(driver, url=None):
525
525
  js_utils.call_me_later(driver, script, 3)
526
526
  time.sleep(0.012)
527
527
  driver.close()
528
- driver.clear_cdp_listeners()
529
- driver.delete_all_cookies()
530
- driver.delete_network_conditions()
531
528
  driver.disconnect()
532
529
 
533
530
  cdp_details = driver._get_cdp_details()
@@ -546,6 +543,7 @@ def uc_open_with_cdp_mode(driver, url=None):
546
543
  cdp_util.start(host=cdp_host, port=cdp_port)
547
544
  )
548
545
  page = loop.run_until_complete(driver.cdp_base.get(url))
546
+ loop.run_until_complete(page.activate())
549
547
  if not safe_url:
550
548
  time.sleep(constants.UC.CDP_MODE_OPEN_WAIT)
551
549
  cdp = types.SimpleNamespace()
@@ -4090,6 +4090,88 @@ class BaseCase(unittest.TestCase):
4090
4090
  "Browser: {%s} is not a valid browser option. "
4091
4091
  "Valid options = {%s}" % (browser, valid_browsers)
4092
4092
  )
4093
+ # Fix Chrome-130 issues by creating a user-data-dir in advance
4094
+ if (
4095
+ undetectable
4096
+ and (
4097
+ not user_data_dir
4098
+ or not os.path.exists(user_data_dir)
4099
+ or not any(os.scandir(user_data_dir))
4100
+ )
4101
+ and self.browser == "chrome"
4102
+ ):
4103
+ import tempfile
4104
+ if not user_data_dir:
4105
+ user_data_dir = os.path.normpath(tempfile.mkdtemp())
4106
+ self.user_data_dir = user_data_dir
4107
+ sb_config.user_data_dir = user_data_dir
4108
+ try:
4109
+ decoy_driver = browser_launcher.get_driver(
4110
+ browser_name=browser_name,
4111
+ headless=headless,
4112
+ locale_code=locale_code,
4113
+ use_grid=use_grid,
4114
+ protocol=protocol,
4115
+ servername=servername,
4116
+ port=port,
4117
+ proxy_string=proxy_string,
4118
+ proxy_bypass_list=proxy_bypass_list,
4119
+ proxy_pac_url=proxy_pac_url,
4120
+ multi_proxy=multi_proxy,
4121
+ user_agent=user_agent,
4122
+ cap_file=cap_file,
4123
+ cap_string=cap_string,
4124
+ recorder_ext=recorder_ext,
4125
+ disable_cookies=disable_cookies,
4126
+ disable_js=disable_js,
4127
+ disable_csp=disable_csp,
4128
+ enable_ws=enable_ws,
4129
+ enable_sync=enable_sync,
4130
+ use_auto_ext=use_auto_ext,
4131
+ undetectable=undetectable,
4132
+ uc_cdp_events=uc_cdp_events,
4133
+ uc_subprocess=uc_subprocess,
4134
+ log_cdp_events=log_cdp_events,
4135
+ no_sandbox=no_sandbox,
4136
+ disable_gpu=disable_gpu,
4137
+ headless1=headless1,
4138
+ headless2=True,
4139
+ incognito=incognito,
4140
+ guest_mode=guest_mode,
4141
+ dark_mode=dark_mode,
4142
+ devtools=devtools,
4143
+ remote_debug=remote_debug,
4144
+ enable_3d_apis=enable_3d_apis,
4145
+ swiftshader=swiftshader,
4146
+ ad_block_on=ad_block_on,
4147
+ host_resolver_rules=host_resolver_rules,
4148
+ block_images=block_images,
4149
+ do_not_track=do_not_track,
4150
+ chromium_arg=chromium_arg,
4151
+ firefox_arg=firefox_arg,
4152
+ firefox_pref=firefox_pref,
4153
+ user_data_dir=user_data_dir,
4154
+ extension_zip=extension_zip,
4155
+ extension_dir=extension_dir,
4156
+ disable_features=disable_features,
4157
+ binary_location=binary_location,
4158
+ driver_version=driver_version,
4159
+ page_load_strategy=page_load_strategy,
4160
+ use_wire=use_wire,
4161
+ external_pdf=external_pdf,
4162
+ test_id=test_id,
4163
+ mobile_emulator=is_mobile,
4164
+ device_width=d_width,
4165
+ device_height=d_height,
4166
+ device_pixel_ratio=d_p_r,
4167
+ browser=browser_name,
4168
+ )
4169
+ time.sleep(0.555)
4170
+ except Exception:
4171
+ pass
4172
+ finally:
4173
+ with suppress(Exception):
4174
+ decoy_driver.quit()
4093
4175
  # Launch a web browser
4094
4176
  new_driver = browser_launcher.get_driver(
4095
4177
  browser_name=browser_name,
@@ -4435,7 +4517,12 @@ class BaseCase(unittest.TestCase):
4435
4517
  """Loads the page cookies from the "saved_cookies" folder."""
4436
4518
  cookies = self.get_saved_cookies(name)
4437
4519
  self.wait_for_ready_state_complete()
4520
+ origin = self.get_origin()
4521
+ trim_origin = origin.split("://")[-1]
4438
4522
  for cookie in cookies:
4523
+ if "domain" in cookie:
4524
+ if cookie["domain"] not in origin:
4525
+ cookie["domain"] = trim_origin
4439
4526
  if "expiry" in cookie:
4440
4527
  del cookie["expiry"]
4441
4528
  self.driver.add_cookie(cookie)
@@ -4656,30 +4743,6 @@ class BaseCase(unittest.TestCase):
4656
4743
  if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
4657
4744
  self.driver.uc_open_with_cdp_mode(url)
4658
4745
  else:
4659
- # Fix Chrome-130 issues by creating a user-data-dir in advance
4660
- if (
4661
- (
4662
- not self.user_data_dir
4663
- or not os.path.exists(self.user_data_dir)
4664
- )
4665
- and self.browser == "chrome"
4666
- ):
4667
- import tempfile
4668
- user_data_dir = os.path.normpath(tempfile.mkdtemp())
4669
- self.user_data_dir = user_data_dir
4670
- sb_config.user_data_dir = user_data_dir
4671
- try:
4672
- driver = self.get_new_driver(
4673
- user_data_dir=user_data_dir,
4674
- undetectable=True,
4675
- headless2=True,
4676
- )
4677
- time.sleep(0.555)
4678
- except Exception:
4679
- pass
4680
- finally:
4681
- with suppress(Exception):
4682
- driver.quit()
4683
4746
  self.get_new_driver(undetectable=True)
4684
4747
  self.driver.uc_open_with_cdp_mode(url)
4685
4748
  self.cdp = self.driver.cdp
@@ -14941,31 +15004,6 @@ class BaseCase(unittest.TestCase):
14941
15004
  self.__js_start_time = int(time.time() * 1000.0)
14942
15005
  else:
14943
15006
  # Launch WebDriver for both pytest and pynose
14944
-
14945
- # Fix Chrome-130 issues by creating a user-data-dir in advance
14946
- if (
14947
- self.undetectable
14948
- and (
14949
- not self.user_data_dir
14950
- or not os.path.exists(self.user_data_dir)
14951
- )
14952
- and self.browser == "chrome"
14953
- ):
14954
- import tempfile
14955
- user_data_dir = os.path.normpath(tempfile.mkdtemp())
14956
- self.user_data_dir = user_data_dir
14957
- sb_config.user_data_dir = user_data_dir
14958
- try:
14959
- driver = self.get_new_driver(
14960
- user_data_dir=user_data_dir,
14961
- headless2=True,
14962
- )
14963
- time.sleep(0.555)
14964
- except Exception:
14965
- pass
14966
- finally:
14967
- with suppress(Exception):
14968
- driver.quit()
14969
15007
  self.driver = self.get_new_driver(
14970
15008
  browser=self.browser,
14971
15009
  headless=self.headless,
@@ -792,12 +792,21 @@ def Driver(
792
792
  from seleniumbase.core import browser_launcher
793
793
 
794
794
  # Fix Chrome-130 issues by creating a user-data-dir in advance
795
- if undetectable and not user_data_dir and browser == "chrome":
795
+ if (
796
+ undetectable
797
+ and (
798
+ not user_data_dir
799
+ or not os.path.exists(user_data_dir)
800
+ or not any(os.scandir(user_data_dir))
801
+ )
802
+ and browser == "chrome"
803
+ ):
796
804
  import tempfile
797
805
  import time
798
- user_data_dir = (
799
- os.path.normpath(tempfile.mkdtemp())
800
- )
806
+ if not user_data_dir:
807
+ user_data_dir = (
808
+ os.path.normpath(tempfile.mkdtemp())
809
+ )
801
810
  try:
802
811
  decoy_driver = browser_launcher.get_driver(
803
812
  browser_name=browser_name,
@@ -1212,30 +1212,6 @@ def SB(
1212
1212
  if not sb_config.multi_proxy:
1213
1213
  proxy_helper.remove_proxy_zip_if_present()
1214
1214
  start_time = time.time()
1215
- saved_headless2 = headless2
1216
-
1217
- # Fix Chrome-130 issues by creating a user-data-dir in advance
1218
- if undetectable and not user_data_dir and browser == "chrome":
1219
- import tempfile
1220
- user_data_dir = (
1221
- os.path.normpath(tempfile.mkdtemp())
1222
- )
1223
- sb.user_data_dir = user_data_dir
1224
- sb_config.user_data_dir = user_data_dir
1225
- try:
1226
- decoy = sb
1227
- decoy.headless2 = True
1228
- decoy.setUp()
1229
- decoy.sleep(0.555)
1230
- except Exception:
1231
- pass
1232
- finally:
1233
- try:
1234
- decoy.tearDown()
1235
- except Exception:
1236
- pass
1237
- sb.headless2 = saved_headless2
1238
-
1239
1215
  sb.setUp()
1240
1216
  test_passed = True # This can change later
1241
1217
  teardown_exception = None
@@ -133,8 +133,11 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
133
133
  options = ChromeOptions()
134
134
  try:
135
135
  if hasattr(options, "_session") and options._session is not None:
136
- # Prevent reuse of options
137
- raise RuntimeError("You cannot reuse the ChromeOptions object")
136
+ # Prevent reuse of options.
137
+ # (Probably a port overlap. Quit existing driver and continue.)
138
+ logger.debug("You cannot reuse the ChromeOptions object")
139
+ with suppress(Exception):
140
+ options._session.quit()
138
141
  except AttributeError:
139
142
  pass
140
143
  options._session = self
@@ -0,0 +1 @@
1
+ from seleniumbase.undetected.cdp_driver import cdp_util # noqa
@@ -0,0 +1,110 @@
1
+ import warnings as _warnings
2
+ from collections.abc import Mapping as _Mapping, Sequence as _Sequence
3
+ import logging
4
+
5
+ __logger__ = logging.getLogger(__name__)
6
+ __all__ = ["cdict", "ContraDict"]
7
+
8
+
9
+ def cdict(*args, **kwargs):
10
+ """Factory function"""
11
+ return ContraDict(*args, **kwargs)
12
+
13
+
14
+ class ContraDict(dict):
15
+ """
16
+ Directly inherited from dict.
17
+ Accessible by attribute. o.x == o['x']
18
+ This works also for all corner cases.
19
+ Native json.dumps and json.loads work with it.
20
+
21
+ Names like "keys", "update", "values" etc won't overwrite the methods,
22
+ but will just be available using dict lookup notation obj['items']
23
+ instead of obj.items.
24
+
25
+ All key names are converted to snake_case.
26
+ Hyphen's (-), dot's (.) or whitespaces are replaced by underscore (_).
27
+ Autocomplete works even if the objects comes from a list.
28
+ Recursive action. Dict assignments will be converted too.
29
+ """
30
+ __module__ = None
31
+
32
+ def __init__(self, *args, **kwargs):
33
+ super().__init__()
34
+ silent = kwargs.pop("silent", False)
35
+ _ = dict(*args, **kwargs)
36
+
37
+ super().__setattr__("__dict__", self)
38
+ for k, v in _.items():
39
+ _check_key(k, self, False, silent)
40
+ super().__setitem__(k, _wrap(self.__class__, v))
41
+
42
+ def __setitem__(self, key, value):
43
+ super().__setitem__(key, _wrap(self.__class__, value))
44
+
45
+ def __setattr__(self, key, value):
46
+ super().__setitem__(key, _wrap(self.__class__, value))
47
+
48
+ def __getattribute__(self, attribute):
49
+ if attribute in self:
50
+ return self[attribute]
51
+ if not _check_key(attribute, self, True, silent=True):
52
+ return getattr(super(), attribute)
53
+ return object.__getattribute__(self, attribute)
54
+
55
+
56
+ def _wrap(cls, v):
57
+ if isinstance(v, _Mapping):
58
+ v = cls(v)
59
+ elif isinstance(v, _Sequence) and not isinstance(
60
+ v, (str, bytes, bytearray, set, tuple)
61
+ ):
62
+ v = list([_wrap(cls, x) for x in v])
63
+ return v
64
+
65
+
66
+ _warning_names = (
67
+ "items",
68
+ "keys",
69
+ "values",
70
+ "update",
71
+ "clear",
72
+ "copy",
73
+ "fromkeys",
74
+ "get",
75
+ "items",
76
+ "keys",
77
+ "pop",
78
+ "popitem",
79
+ "setdefault",
80
+ "update",
81
+ "values",
82
+ "class",
83
+ )
84
+
85
+ _warning_names_message = """\n\
86
+ While creating a ContraDict object, a key offending key name '{0}'
87
+ has been found, which might behave unexpected.
88
+ You will only be able to look it up using key,
89
+ eg. myobject['{0}']. myobject.{0} will not work with that name."""
90
+
91
+
92
+ def _check_key(
93
+ key: str, mapping: _Mapping, boolean: bool = False, silent=False
94
+ ):
95
+ """Checks `key` and warns if needed.
96
+ :param key:
97
+ :param boolean: return True or False instead of passthrough
98
+ """
99
+ e = None
100
+ if not isinstance(key, (str,)):
101
+ if boolean:
102
+ return True
103
+ return key
104
+ if key.lower() in _warning_names or any(_ in key for _ in ("-", ".")):
105
+ if not silent:
106
+ _warnings.warn(_warning_names_message.format(key))
107
+ e = True
108
+ if not boolean:
109
+ return key
110
+ return not e