seleniumbase 4.31.0__tar.gz → 4.31.2__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. {seleniumbase-4.31.0/seleniumbase.egg-info → seleniumbase-4.31.2}/PKG-INFO +5 -3
  2. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/README.md +4 -2
  3. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/handle_alert_test.py +2 -0
  4. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_parameter_script.py +14 -7
  5. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/__version__.py +1 -1
  6. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/behave/behave_sb.py +20 -3
  7. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/logo_helper.py +47 -0
  8. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/run.py +7 -4
  9. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/browser_launcher.py +62 -5
  10. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/sb_driver.py +11 -0
  11. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/base_case.py +24 -1
  12. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/page_utils.py +5 -2
  13. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/driver_manager.py +90 -71
  14. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/pytest_plugin.py +28 -2
  15. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/sb_manager.py +123 -101
  16. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/selenium_plugin.py +30 -2
  17. {seleniumbase-4.31.0 → seleniumbase-4.31.2/seleniumbase.egg-info}/PKG-INFO +5 -3
  18. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/.gitignore +0 -0
  19. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/LICENSE +0 -0
  20. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/MANIFEST.in +0 -0
  21. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/__init__.py +0 -0
  22. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/basic_test.py +0 -0
  23. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/__init__.py +0 -0
  24. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/__init__.py +0 -0
  25. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/environment.py +0 -0
  26. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/steps/__init__.py +0 -0
  27. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/steps/calculator.py +0 -0
  28. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  29. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/steps/imported.py +0 -0
  30. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  31. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/__init__.py +0 -0
  32. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/base_test_case.py +0 -0
  33. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/boilerplate_test.py +0 -0
  34. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/classic_obj_test.py +0 -0
  35. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/page_objects.py +0 -0
  36. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/__init__.py +0 -0
  37. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  38. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  39. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/google_objects.py +0 -0
  40. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/google_test.py +0 -0
  41. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  42. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  43. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/samples/test_page_objects.py +0 -0
  44. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/boilerplates/sb_fixture_test.py +0 -0
  45. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/capabilities/mac_cap_file.py +0 -0
  46. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/capabilities/sample_cap_file_BS.py +0 -0
  47. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/capabilities/sample_cap_file_SL.py +0 -0
  48. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/capabilities/selenoid_cap_file.py +0 -0
  49. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/capabilities/win10_cap_file.py +0 -0
  50. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/chart_presentation.py +0 -0
  51. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/my_chart.py +0 -0
  52. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/pie_charts.py +0 -0
  53. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/test_area_chart.py +0 -0
  54. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/test_display_chart.py +0 -0
  55. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/test_line_chart.py +0 -0
  56. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/test_multi_series.py +0 -0
  57. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/chart_maker/test_save_chart.py +0 -0
  58. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/coffee_cart_tests.py +0 -0
  59. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/custom_settings.py +0 -0
  60. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/desktop_apps/recorder.py +0 -0
  61. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  62. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/edge_test.py +0 -0
  63. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/github_test.py +0 -0
  64. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/gui_test_runner.py +0 -0
  65. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/hack_the_planet.py +0 -0
  66. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/iframe_tests.py +0 -0
  67. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/locale_code_test.py +0 -0
  68. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/master_qa/__init__.py +0 -0
  69. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  70. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/master_qa/masterqa_test_1.py +0 -0
  71. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/__init__.py +0 -0
  72. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/protractor/__init__.py +0 -0
  73. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/protractor/example_test.py +0 -0
  74. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/protractor/input_test.py +0 -0
  75. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/protractor/mat_paginator_test.py +0 -0
  76. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/__init__.py +0 -0
  77. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  78. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  79. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/messy_raw.py +0 -0
  80. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/refined_raw.py +0 -0
  81. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  82. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/my_first_test.py +0 -0
  83. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/nth_child_test.py +0 -0
  84. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/__init__.py +0 -0
  85. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/load_html_test.py +0 -0
  86. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/test_demo_page.py +0 -0
  87. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/test_extended_driver.py +0 -0
  88. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/test_handle_alerts.py +0 -0
  89. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/test_request_fixture.py +0 -0
  90. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/offline_examples/test_user_agent.py +0 -0
  91. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/old_wordle_script.py +0 -0
  92. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/parameterized_test.py +0 -0
  93. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/performance_test.py +0 -0
  94. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/core_presentation.py +0 -0
  95. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/edge_presentation.py +0 -0
  96. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/fundamentals.py +0 -0
  97. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/multi_uc.py +0 -0
  98. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/my_presentation.py +0 -0
  99. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/py_virtual_envs.py +0 -0
  100. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/uc_presentation.py +0 -0
  101. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/presenter/uc_presentation_3.py +0 -0
  102. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/proxy_test.py +0 -0
  103. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/rate_limiting_test.py +0 -0
  104. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_ahrefs.py +0 -0
  105. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_antibot_login.py +0 -0
  106. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_bing_captcha.py +0 -0
  107. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_block.py +0 -0
  108. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_brotector_captcha.py +0 -0
  109. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_call.py +0 -0
  110. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_cdp_logging.py +0 -0
  111. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_cf.py +0 -0
  112. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_cookies.py +0 -0
  113. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_detection.py +0 -0
  114. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_driver_context.py +0 -0
  115. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_driver_manager.py +0 -0
  116. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_file_call.py +0 -0
  117. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_form_turnstile.py +0 -0
  118. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_games.py +0 -0
  119. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_gui_click.py +0 -0
  120. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_hobbit.py +0 -0
  121. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_login_context.py +0 -0
  122. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_login_driver.py +0 -0
  123. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_login_sb.py +0 -0
  124. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_main_call.py +0 -0
  125. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_mobile.py +0 -0
  126. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_multi_drivers.py +0 -0
  127. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_nopecha.py +0 -0
  128. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_order_tickets.py +0 -0
  129. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_performance_logs.py +0 -0
  130. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_pixelscan.py +0 -0
  131. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_pyautogui.py +0 -0
  132. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_recaptcha.py +0 -0
  133. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_robot.py +0 -0
  134. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_sb.py +0 -0
  135. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_test_scripts.py +0 -0
  136. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_turnstile.py +0 -0
  137. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/raw_uc_mode.py +0 -0
  138. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/sb_fixture_tests.py +0 -0
  139. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/shadow_root_test.py +0 -0
  140. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/swag_labs_user_tests.py +0 -0
  141. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_3d_apis.py +0 -0
  142. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_apple_site.py +0 -0
  143. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_assert_elements.py +0 -0
  144. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_calculator.py +0 -0
  145. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_canvas.py +0 -0
  146. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_cdp_ad_blocking.py +0 -0
  147. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_checkboxes.py +0 -0
  148. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_chinese_pdf.py +0 -0
  149. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_chromedriver.py +0 -0
  150. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_coffee_cart.py +0 -0
  151. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_console_logging.py +0 -0
  152. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_contains_selector.py +0 -0
  153. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_cycle_elements.py +0 -0
  154. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_decryption.py +0 -0
  155. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_deferred_asserts.py +0 -0
  156. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_demo_site.py +0 -0
  157. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_detect_404s.py +0 -0
  158. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_docs_site.py +0 -0
  159. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_double_click.py +0 -0
  160. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_download_files.py +0 -0
  161. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_download_images.py +0 -0
  162. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_drag_and_drop.py +0 -0
  163. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_error_page.py +0 -0
  164. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_event_firing.py +0 -0
  165. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_fail.py +0 -0
  166. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_geolocation.py +0 -0
  167. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_get_coffee.py +0 -0
  168. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_get_locale_code.py +0 -0
  169. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_get_pdf_text.py +0 -0
  170. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_get_user_agent.py +0 -0
  171. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_hack_search.py +0 -0
  172. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_highlight_elements.py +0 -0
  173. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_image_saving.py +0 -0
  174. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_inspect_html.py +0 -0
  175. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_login.py +0 -0
  176. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_markers.py +0 -0
  177. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_mfa_login.py +0 -0
  178. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_multiple_drivers.py +0 -0
  179. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_null.py +0 -0
  180. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_override_driver.py +0 -0
  181. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_override_sb_fixture.py +0 -0
  182. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_parse_soup.py +0 -0
  183. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_pdf_asserts.py +0 -0
  184. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_pytest_parametrize.py +0 -0
  185. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_repeat_tests.py +0 -0
  186. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_request_sb_fixture.py +0 -0
  187. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_save_screenshots.py +0 -0
  188. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_sb_fixture.py +0 -0
  189. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_scrape_bing.py +0 -0
  190. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_select_options.py +0 -0
  191. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_shadow_dom.py +0 -0
  192. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_show_file_choosers.py +0 -0
  193. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_simple_login.py +0 -0
  194. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_skype_site.py +0 -0
  195. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_suite.py +0 -0
  196. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_swag_labs.py +0 -0
  197. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_tinymce.py +0 -0
  198. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_todomvc.py +0 -0
  199. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_url_asserts.py +0 -0
  200. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_usefixtures.py +0 -0
  201. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_verify_chromedriver.py +0 -0
  202. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_window_switching.py +0 -0
  203. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_xfail.py +0 -0
  204. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/test_xkcd.py +0 -0
  205. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/time_limit_test.py +0 -0
  206. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  207. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  208. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  209. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/google_tour.py +0 -0
  210. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  211. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/introjs_google_tour.py +0 -0
  212. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/maps_introjs_tour.py +0 -0
  213. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/octocat_tour.py +0 -0
  214. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/recordings/__init__.py +0 -0
  215. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -0
  216. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/shepherd_google_tour.py +0 -0
  217. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/tour_examples/xkcd_tour.py +0 -0
  218. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/chinese_test_1.py +0 -0
  219. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/dutch_test_1.py +0 -0
  220. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/english_test_1.py +0 -0
  221. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/french_test_1.py +0 -0
  222. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/italian_test_1.py +0 -0
  223. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/japanese_test_1.py +0 -0
  224. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/korean_test_1.py +0 -0
  225. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/portuguese_test_1.py +0 -0
  226. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/russian_test_1.py +0 -0
  227. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/translations/spanish_test_1.py +0 -0
  228. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/uc_cdp_events.py +0 -0
  229. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/unit_tests/verify_framework.py +0 -0
  230. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/upgrade_chromedriver.py +0 -0
  231. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/upload_file_test.py +0 -0
  232. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/user_agent_test.py +0 -0
  233. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/verify_undetected.py +0 -0
  234. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/visual_testing/__init__.py +0 -0
  235. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/visual_testing/layout_test.py +0 -0
  236. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/visual_testing/python_home_test.py +0 -0
  237. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/visual_testing/test_layout_fail.py +0 -0
  238. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/visual_testing/xkcd_visual_test.py +0 -0
  239. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/wordle_test.py +0 -0
  240. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/xpath_test.py +0 -0
  241. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/examples/youtube_search_test.py +0 -0
  242. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/install.sh +0 -0
  243. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/__init__.py +0 -0
  244. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/__init__.py +0 -0
  245. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/environment.py +0 -0
  246. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/steps/__init__.py +0 -0
  247. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/steps/calculator.py +0 -0
  248. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/steps/fail_page.py +0 -0
  249. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/steps/real_world.py +0 -0
  250. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/behave/features/steps/swag_labs.py +0 -0
  251. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/brython/index.py +0 -0
  252. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/node_js/__init__.py +0 -0
  253. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/node_js/my_first_test.py +0 -0
  254. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/integrations/node_js/test_demo_site.py +0 -0
  255. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/mkdocs_build/prepare.py +0 -0
  256. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/pyproject.toml +0 -0
  257. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/pytest.ini +0 -0
  258. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/requirements.txt +0 -0
  259. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/sbase/__init__.py +0 -0
  260. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/sbase/__main__.py +0 -0
  261. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/sbase/steps.py +0 -0
  262. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/__init__.py +0 -0
  263. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/__main__.py +0 -0
  264. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/behave/__init__.py +0 -0
  265. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/behave/behave_helper.py +0 -0
  266. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/behave/steps.py +0 -0
  267. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/__init__.py +0 -0
  268. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/decorators.py +0 -0
  269. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/encryption.py +0 -0
  270. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/exceptions.py +0 -0
  271. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/obfuscate.py +0 -0
  272. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/common/unobfuscate.py +0 -0
  273. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/config/__init__.py +0 -0
  274. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/config/ad_block_list.py +0 -0
  275. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/config/proxy_list.py +0 -0
  276. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/config/settings.py +0 -0
  277. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/__init__.py +0 -0
  278. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
  279. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  280. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  281. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
  282. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_install.py +0 -0
  283. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  284. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  285. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  286. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  287. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  288. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  289. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_print.py +0 -0
  290. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  291. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/__init__.py +0 -0
  292. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/application_manager.py +0 -0
  293. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/capabilities_parser.py +0 -0
  294. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/colored_traceback.py +0 -0
  295. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/create_db_tables.sql +0 -0
  296. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/detect_b_ver.py +0 -0
  297. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/download_helper.py +0 -0
  298. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/encoded_images.py +0 -0
  299. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/jqc_helper.py +0 -0
  300. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/log_helper.py +0 -0
  301. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/mysql.py +0 -0
  302. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/proxy_helper.py +0 -0
  303. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/recorder_helper.py +0 -0
  304. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/report_helper.py +0 -0
  305. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/s3_manager.py +0 -0
  306. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/session_helper.py +0 -0
  307. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/settings_parser.py +0 -0
  308. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/style_sheet.py +0 -0
  309. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/testcase_manager.py +0 -0
  310. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/tour_helper.py +0 -0
  311. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/core/visual_helper.py +0 -0
  312. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/drivers/__init__.py +0 -0
  313. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/extensions/__init__.py +0 -0
  314. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/extensions/ad_block.zip +0 -0
  315. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/extensions/disable_csp.zip +0 -0
  316. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/extensions/recorder.zip +0 -0
  317. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
  318. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/__init__.py +0 -0
  319. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/constants.py +0 -0
  320. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  321. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/errors.py +0 -0
  322. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/js_utils.py +0 -0
  323. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/page_actions.py +0 -0
  324. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/shared_utils.py +0 -0
  325. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
  326. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/words.py +0 -0
  327. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  328. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/js_code/__init__.py +0 -0
  329. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/js_code/active_css_js.py +0 -0
  330. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/js_code/live_js.py +0 -0
  331. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/js_code/recorder_js.py +0 -0
  332. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/masterqa/__init__.py +0 -0
  333. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/masterqa/master_qa.py +0 -0
  334. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/__init__.py +0 -0
  335. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/base_plugin.py +0 -0
  336. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/basic_test_info.py +0 -0
  337. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  338. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/page_source.py +0 -0
  339. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  340. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/plugins/screen_shots.py +0 -0
  341. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/resources/__init__.py +0 -0
  342. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/__init__.py +0 -0
  343. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/chinese.py +0 -0
  344. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/dutch.py +0 -0
  345. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/french.py +0 -0
  346. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/italian.py +0 -0
  347. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/japanese.py +0 -0
  348. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/korean.py +0 -0
  349. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/master_dict.py +0 -0
  350. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/portuguese.py +0 -0
  351. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/russian.py +0 -0
  352. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/spanish.py +0 -0
  353. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/translate/translator.py +0 -0
  354. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/__init__.py +0 -0
  355. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/cdp.py +0 -0
  356. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/dprocess.py +0 -0
  357. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/options.py +0 -0
  358. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/patcher.py +0 -0
  359. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/reactor.py +0 -0
  360. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/undetected/webelement.py +0 -0
  361. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/__init__.py +0 -0
  362. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  363. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  364. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  365. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  366. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  367. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  368. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  369. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  370. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  371. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  372. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  373. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  374. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  375. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase.egg-info/SOURCES.txt +0 -0
  376. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
  377. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase.egg-info/entry_points.txt +0 -0
  378. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase.egg-info/requires.txt +0 -0
  379. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/seleniumbase.egg-info/top_level.txt +0 -0
  380. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/setup.cfg +0 -0
  381. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/setup.py +0 -0
  382. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/site/prepare.py +0 -0
  383. {seleniumbase-4.31.0 → seleniumbase-4.31.2}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.31.0
3
+ Version: 4.31.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
@@ -821,8 +821,9 @@ pytest test_coffee_cart.py --trace
821
821
  --sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
822
822
  --wfa # (Wait for AngularJS to be done loading after specific web actions.)
823
823
  --pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
824
- --headless # (Run tests in headless mode. The default arg on Linux OS.)
825
- --headless2 # (Use the new headless mode, which supports extensions.)
824
+ --headless # (The default headless mode. Linux uses this mode by default.)
825
+ --headless1 # (Use Chrome's old headless mode. Fast, but has limitations.)
826
+ --headless2 # (Use Chrome's new headless mode, which supports extensions.)
826
827
  --headed # (Run tests in headed/GUI mode on Linux OS, where not default.)
827
828
  --xvfb # (Run tests using the Xvfb virtual display server on Linux OS.)
828
829
  --xvfb-metrics=STRING # (Set Xvfb display size on Linux: "Width,Height".)
@@ -848,6 +849,7 @@ pytest test_coffee_cart.py --trace
848
849
  --rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)
849
850
  --rec-sleep # (If the Recorder is enabled, also records self.sleep calls.)
850
851
  --rec-print # (If the Recorder is enabled, prints output after tests end.)
852
+ --disable-cookies # (Disable Cookies on websites. Pages might break!)
851
853
  --disable-js # (Disable JavaScript on websites. Pages might break!)
852
854
  --disable-csp # (Disable the Content Security Policy of websites.)
853
855
  --disable-ws # (Disable Web Security on Chromium-based browsers.)
@@ -653,8 +653,9 @@ pytest test_coffee_cart.py --trace
653
653
  --sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
654
654
  --wfa # (Wait for AngularJS to be done loading after specific web actions.)
655
655
  --pls=PLS # (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
656
- --headless # (Run tests in headless mode. The default arg on Linux OS.)
657
- --headless2 # (Use the new headless mode, which supports extensions.)
656
+ --headless # (The default headless mode. Linux uses this mode by default.)
657
+ --headless1 # (Use Chrome's old headless mode. Fast, but has limitations.)
658
+ --headless2 # (Use Chrome's new headless mode, which supports extensions.)
658
659
  --headed # (Run tests in headed/GUI mode on Linux OS, where not default.)
659
660
  --xvfb # (Run tests using the Xvfb virtual display server on Linux OS.)
660
661
  --xvfb-metrics=STRING # (Set Xvfb display size on Linux: "Width,Height".)
@@ -680,6 +681,7 @@ pytest test_coffee_cart.py --trace
680
681
  --rec-behave # (Same as Recorder Mode, but also generates behave-gherkin.)
681
682
  --rec-sleep # (If the Recorder is enabled, also records self.sleep calls.)
682
683
  --rec-print # (If the Recorder is enabled, prints output after tests end.)
684
+ --disable-cookies # (Disable Cookies on websites. Pages might break!)
683
685
  --disable-js # (Disable JavaScript on websites. Pages might break!)
684
686
  --disable-csp # (Disable the Content Security Policy of websites.)
685
687
  --disable-ws # (Disable Web Security on Chromium-based browsers.)
@@ -7,6 +7,7 @@ class HandleAlertTests(BaseCase):
7
7
  self.open("about:blank")
8
8
  self.execute_script('window.alert("ALERT!!!");')
9
9
  self.sleep(1) # Not needed (Lets you see the alert pop up)
10
+ self.assert_true(self.is_alert_present())
10
11
  self.accept_alert()
11
12
  self.sleep(1) # Not needed (Lets you see the alert go away)
12
13
  self.execute_script('window.prompt("My Prompt","defaultText");')
@@ -15,6 +16,7 @@ class HandleAlertTests(BaseCase):
15
16
  self.assert_equal(alert.text, "My Prompt") # Not input field
16
17
  self.dismiss_alert()
17
18
  self.sleep(1) # Not needed (Lets you see the alert go away)
19
+ self.assert_false(self.is_alert_present())
18
20
  if self.browser == "safari" and self._reuse_session:
19
21
  # Alerts can freeze Safari if reusing the browser session
20
22
  self.driver.quit()
@@ -1,11 +1,13 @@
1
1
  """ The main purpose of this file is to demonstrate running SeleniumBase
2
2
  scripts without the use of Pytest by calling the script directly
3
- with Python or from a Python interactive interpreter. Based on
4
- whether relative imports work or don't, the script can autodetect
5
- how this file was run. With pure Python, it will initialize
6
- all the variables that would've been automatically initialized
7
- by the Pytest plugin. The setUp() and tearDown() methods are also
8
- now called from the script itself.
3
+ with Python or from a Python interactive interpreter.
4
+ Based on whether relative imports work or don't work, this script
5
+ can autodetect how this file was run. With pure Python, it
6
+ initializes all the variables that would've been automatically
7
+ initialized by the Pytest plugin. The setUp() and tearDown() methods
8
+ are also now called from the script itself.
9
+
10
+ (Note: The SB() and Driver() formats make this example obsolete.)
9
11
 
10
12
  One big advantage to running tests with Pytest is that most of this
11
13
  is done for you automatically, with the option to update any of the
@@ -13,8 +15,9 @@
13
15
  with other plugins, such as ones for generating test reports,
14
16
  handling multithreading, and parametrized tests. Depending on your
15
17
  specific needs, you may need to call SeleniumBase commands without
16
- using Pytest, and this example shows you how.
18
+ using Pytest, and this example shows you one way of doing that.
17
19
  """
20
+
18
21
  pure_python = False
19
22
  try:
20
23
  # Running with Pytest / (Finds test methods to run using autodiscovery)
@@ -33,9 +36,11 @@ if pure_python:
33
36
  sb.browser = "chrome"
34
37
  sb.is_behave = False
35
38
  sb.headless = False
39
+ sb.headless1 = False
36
40
  sb.headless2 = False
37
41
  sb.headed = False
38
42
  sb.xvfb = False
43
+ sb.xvfb_metrics = None
39
44
  sb.start_page = None
40
45
  sb.locale_code = None
41
46
  sb.protocol = "http"
@@ -79,9 +84,11 @@ if pure_python:
79
84
  sb.esc_end = False
80
85
  sb.use_wire = False
81
86
  sb.enable_3d_apis = False
87
+ sb.window_position = None
82
88
  sb.window_size = None
83
89
  sb.maximize_option = False
84
90
  sb.visual_baseline = False
91
+ sb.disable_cookies = False
85
92
  sb.disable_features = None
86
93
  sb._disable_beforeunload = False
87
94
  sb.save_screenshot_after_test = False
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.31.0"
2
+ __version__ = "4.31.2"
@@ -44,8 +44,9 @@ behave -D agent="User Agent String" -D demo
44
44
  -D sjw (Skip JS Waits for readyState to be "complete" or Angular to load.)
45
45
  -D wfa (Wait for AngularJS to be done loading after specific web actions.)
46
46
  -D pls=PLS (Set pageLoadStrategy on Chrome: "normal", "eager", or "none".)
47
- -D headless (Run tests in headless mode. The default arg on Linux OS.)
48
- -D headless2 (Use the new headless mode, which supports extensions.)
47
+ -D headless (The default headless mode. Linux uses this mode by default.)
48
+ -D headless1 (Use Chrome's old headless mode. Fast, but has limitations.)
49
+ -D headless2 (Use Chrome's new headless mode, which supports extensions.)
49
50
  -D headed (Run tests in headed/GUI mode on Linux OS, where not default.)
50
51
  -D xvfb (Run tests using the Xvfb virtual display server on Linux OS.)
51
52
  -D xvfb-metrics=STRING (Set Xvfb display size on Linux: "Width,Height".)
@@ -70,7 +71,8 @@ behave -D agent="User Agent String" -D demo
70
71
  -D rec-behave (Same as Recorder Mode, but also generates behave-gherkin.)
71
72
  -D rec-sleep (If the Recorder is enabled, also records self.sleep calls.)
72
73
  -D rec-print (If the Recorder is enabled, prints output after tests end.)
73
- -D disable-js (Disable JavaScript on Chromium. May break websites!)
74
+ -D disable-cookies (Disable Cookies on websites. Pages might break!)
75
+ -D disable-js (Disable JavaScript on websites. Pages might break!)
74
76
  -D disable-csp (Disable the Content Security Policy of websites.)
75
77
  -D disable-ws (Disable Web Security on Chromium-based browsers.)
76
78
  -D enable-ws (Enable Web Security on Chromium-based browsers.)
@@ -144,6 +146,7 @@ def get_configured_sb(context):
144
146
  sb.browser = "chrome"
145
147
  sb.is_behave = True
146
148
  sb.headless = False
149
+ sb.headless1 = False
147
150
  sb.headless2 = False
148
151
  sb.headless_active = False
149
152
  sb.headed = False
@@ -178,6 +181,7 @@ def get_configured_sb(context):
178
181
  sb.database_env = "test"
179
182
  sb.log_path = constants.Logs.LATEST + os.sep
180
183
  sb.archive_logs = False
184
+ sb.disable_cookies = False
181
185
  sb.disable_js = False
182
186
  sb.disable_csp = False
183
187
  sb.disable_ws = False
@@ -296,6 +300,11 @@ def get_configured_sb(context):
296
300
  sb.headless = True
297
301
  continue
298
302
  # Handle: -D headless2
303
+ if low_key == "headless1":
304
+ sb.headless1 = True
305
+ sb.headless = True
306
+ continue
307
+ # Handle: -D headless2
299
308
  if low_key == "headless2":
300
309
  sb.headless2 = True
301
310
  continue
@@ -528,6 +537,10 @@ def get_configured_sb(context):
528
537
  if low_key in ["archive-logs", "archive_logs"]:
529
538
  sb.archive_logs = True
530
539
  continue
540
+ # Handle: -D disable-cookies / disable_cookies
541
+ if low_key in ["disable-cookies", "disable_cookies"]:
542
+ sb.disable_cookies = True
543
+ continue
531
544
  # Handle: -D disable-js / disable_js
532
545
  if low_key in ["disable-js", "disable_js"]:
533
546
  sb.disable_js = True
@@ -864,6 +877,7 @@ def get_configured_sb(context):
864
877
  # Recorder Mode can still optimize scripts in "-D headless2" mode.
865
878
  if sb.recorder_ext and sb.headless:
866
879
  sb.headless = False
880
+ sb.headless1 = False
867
881
  sb.headless2 = True
868
882
  if sb.headless2 and sb.browser == "firefox":
869
883
  sb.headless2 = False # Only for Chromium browsers
@@ -900,11 +914,13 @@ def get_configured_sb(context):
900
914
  # Recorder Mode can still optimize scripts in --headless2 mode.
901
915
  if sb.recorder_mode and sb.headless:
902
916
  sb.headless = False
917
+ sb.headless1 = False
903
918
  sb.headless2 = True
904
919
  if not sb.headless and not sb.headless2:
905
920
  sb.headed = True
906
921
  if sb.browser == "safari" and sb.headless:
907
922
  sb.headless = False # Safari doesn't support headless mode
923
+ sb.headless1 = False
908
924
  if sb.save_screenshot_after_test and sb.no_screenshot_after_test:
909
925
  sb.save_screenshot_after_test = False # "no_screenshot" has priority
910
926
  if sb.servername != "localhost":
@@ -995,6 +1011,7 @@ def get_configured_sb(context):
995
1011
  sb_config.pdb_option = sb.pdb_option
996
1012
  sb_config.rec_behave = sb.rec_behave
997
1013
  sb_config.rec_print = sb.rec_print
1014
+ sb_config.disable_cookies = sb.disable_cookies
998
1015
  sb_config.disable_js = sb.disable_js
999
1016
  sb_config.disable_csp = sb.disable_csp
1000
1017
  sb_config.record_sleep = sb.record_sleep
@@ -3,7 +3,9 @@
3
3
  http://www.patorjk.com/software/taag/#p=display&f=Slant&t=SeleniumBase """
4
4
 
5
5
  import colorama
6
+ import os
6
7
  import sys
8
+ from contextlib import suppress
7
9
 
8
10
  r"""
9
11
  ______ __ _ ____
@@ -66,4 +68,49 @@ def get_seleniumbase_logo():
66
68
  sb += " "
67
69
  sb += cr
68
70
  sb += cr
71
+ with suppress(Exception):
72
+ terminal_width = os.get_terminal_size().columns
73
+ if isinstance(terminal_width, int) and terminal_width >= 66:
74
+ return sb
75
+
76
+ # If the logo is wider than the screen width, use a smaller one:
77
+ r"""
78
+ ___ _ _ ___
79
+ / __| ___| |___ _ _ (_)_ _ _ __ | _ ) __ _ ______
80
+ \__ \/ -_) / -_) ' \| | \| | ' \ | _ \/ _` (_-< -_)
81
+ |___/\___|_\___|_||_|_|\_,_|_|_|_\|___/\__,_/__|___|
82
+ """
83
+ sb = " "
84
+ sb += cr
85
+ sb += "\n"
86
+ sb += c1
87
+ sb += " ___ _ _ "
88
+ sb += c2
89
+ sb += " ___ "
90
+ sb += cr
91
+ sb += "\n"
92
+ sb += c1
93
+ sb += "/ __| ___| |___ _ _ (_)_ _ _ __ "
94
+ sb += c2
95
+ sb += "| _ ) __ _ ______ "
96
+ sb += cr
97
+ sb += "\n"
98
+ sb += c1
99
+ sb += "\\__ \\/ -_) / -_) ' \\| | \\| | ' \\ "
100
+ sb += c2
101
+ sb += "| _ \\/ _` (_-< -_)"
102
+ sb += cr
103
+ sb += "\n"
104
+ sb += c1
105
+ sb += "|___/\\___|_\\___|_||_|_|\\_,_|_|_|_\\"
106
+ sb += c2
107
+ sb += "|___/\\__,_/__|___|"
108
+ sb += cr
109
+ sb += "\n"
110
+ sb += c3
111
+ sb += " "
112
+ sb += c4
113
+ sb += " "
114
+ sb += cr
115
+ sb += cr
69
116
  return sb
@@ -54,8 +54,8 @@ else:
54
54
  def show_usage():
55
55
  show_basic_usage()
56
56
  sc = ""
57
- sc += ' Type "sbase help [COMMAND]" for specific command info.\n'
58
- sc += ' For info on all commands, type: "seleniumbase --help".\n'
57
+ sc += ' Type "sbase help [COMMAND]" for specific info.\n'
58
+ sc += ' For all commands, type: "seleniumbase --help".\n'
59
59
  sc += ' Use "pytest" for running tests.\n'
60
60
  if "linux" not in sys.platform:
61
61
  c1 = colorama.Fore.BLUE + colorama.Back.LIGHTCYAN_EX
@@ -76,12 +76,15 @@ def show_basic_usage():
76
76
 
77
77
  seleniumbase_logo = logo_helper.get_seleniumbase_logo()
78
78
  print(seleniumbase_logo)
79
+ time.sleep(0.044)
79
80
  print("")
80
- time.sleep(0.28) # Enough time to see the logo
81
+ time.sleep(0.033)
81
82
  show_package_location()
83
+ time.sleep(0.032)
82
84
  show_version_info()
85
+ time.sleep(0.031)
83
86
  print("")
84
- time.sleep(0.62) # Enough time to see the version
87
+ time.sleep(0.68) # Enough time to see the logo & version
85
88
  sc = ""
86
89
  sc += ' * USAGE: "seleniumbase [COMMAND] [PARAMETERS]"\n'
87
90
  sc += ' * OR: "sbase [COMMAND] [PARAMETERS]"\n'
@@ -203,6 +203,8 @@ def extend_driver(driver):
203
203
  driver.is_exact_text_visible = DM.is_exact_text_visible
204
204
  driver.is_attribute_present = DM.is_attribute_present
205
205
  driver.is_non_empty_text_visible = DM.is_non_empty_text_visible
206
+ driver.is_valid_url = DM.is_valid_url
207
+ driver.is_alert_present = DM.is_alert_present
206
208
  driver.is_online = DM.is_online
207
209
  driver.js_click = DM.js_click
208
210
  driver.get_text = DM.get_text
@@ -1542,6 +1544,7 @@ def _set_chrome_options(
1542
1544
  multi_proxy,
1543
1545
  user_agent,
1544
1546
  recorder_ext,
1547
+ disable_cookies,
1545
1548
  disable_js,
1546
1549
  disable_csp,
1547
1550
  enable_ws,
@@ -1553,6 +1556,7 @@ def _set_chrome_options(
1553
1556
  log_cdp_events,
1554
1557
  no_sandbox,
1555
1558
  disable_gpu,
1559
+ headless1,
1556
1560
  headless2,
1557
1561
  incognito,
1558
1562
  guest_mode,
@@ -1618,6 +1622,8 @@ def _set_chrome_options(
1618
1622
  prefs["intl.accept_languages"] = locale_code
1619
1623
  if block_images:
1620
1624
  prefs["profile.managed_default_content_settings.images"] = 2
1625
+ if disable_cookies:
1626
+ prefs["profile.default_content_setting_values.cookies"] = 2
1621
1627
  if disable_js:
1622
1628
  prefs["profile.managed_default_content_settings.javascript"] = 2
1623
1629
  if do_not_track:
@@ -1771,7 +1777,10 @@ def _set_chrome_options(
1771
1777
  pass # Processed After Version Check
1772
1778
  elif headless:
1773
1779
  if not undetectable:
1774
- chrome_options.add_argument("--headless")
1780
+ if headless1:
1781
+ chrome_options.add_argument("--headless=old")
1782
+ else:
1783
+ chrome_options.add_argument("--headless")
1775
1784
  if undetectable and servername and servername != "localhost":
1776
1785
  # The Grid Node will need Chrome 109 or newer
1777
1786
  chrome_options.add_argument("--headless=new")
@@ -2010,6 +2019,7 @@ def _set_firefox_options(
2010
2019
  proxy_bypass_list,
2011
2020
  proxy_pac_url,
2012
2021
  user_agent,
2022
+ disable_cookies,
2013
2023
  disable_js,
2014
2024
  disable_csp,
2015
2025
  firefox_arg,
@@ -2083,6 +2093,8 @@ def _set_firefox_options(
2083
2093
  "security.mixed_content.block_active_content", False
2084
2094
  )
2085
2095
  options.set_preference("security.warn_submit_insecure", False)
2096
+ if disable_cookies:
2097
+ options.set_preference("network.cookie.cookieBehavior", 2)
2086
2098
  if disable_js:
2087
2099
  options.set_preference("javascript.enabled", False)
2088
2100
  if settings.DISABLE_CSP_ON_FIREFOX or disable_csp:
@@ -2182,6 +2194,7 @@ def get_driver(
2182
2194
  cap_file=None,
2183
2195
  cap_string=None,
2184
2196
  recorder_ext=False,
2197
+ disable_cookies=False,
2185
2198
  disable_js=False,
2186
2199
  disable_csp=False,
2187
2200
  enable_ws=False,
@@ -2193,6 +2206,7 @@ def get_driver(
2193
2206
  log_cdp_events=False,
2194
2207
  no_sandbox=False,
2195
2208
  disable_gpu=False,
2209
+ headless1=False,
2196
2210
  headless2=False,
2197
2211
  incognito=False,
2198
2212
  guest_mode=False,
@@ -2341,6 +2355,7 @@ def get_driver(
2341
2355
  headless
2342
2356
  and (
2343
2357
  proxy_auth
2358
+ or disable_cookies
2344
2359
  or disable_js
2345
2360
  or ad_block_on
2346
2361
  or disable_csp
@@ -2395,6 +2410,7 @@ def get_driver(
2395
2410
  cap_file,
2396
2411
  cap_string,
2397
2412
  recorder_ext,
2413
+ disable_cookies,
2398
2414
  disable_js,
2399
2415
  disable_csp,
2400
2416
  enable_ws,
@@ -2406,6 +2422,7 @@ def get_driver(
2406
2422
  log_cdp_events,
2407
2423
  no_sandbox,
2408
2424
  disable_gpu,
2425
+ headless1,
2409
2426
  headless2,
2410
2427
  incognito,
2411
2428
  guest_mode,
@@ -2451,6 +2468,7 @@ def get_driver(
2451
2468
  multi_proxy,
2452
2469
  user_agent,
2453
2470
  recorder_ext,
2471
+ disable_cookies,
2454
2472
  disable_js,
2455
2473
  disable_csp,
2456
2474
  enable_ws,
@@ -2462,6 +2480,7 @@ def get_driver(
2462
2480
  log_cdp_events,
2463
2481
  no_sandbox,
2464
2482
  disable_gpu,
2483
+ headless1,
2465
2484
  headless2,
2466
2485
  incognito,
2467
2486
  guest_mode,
@@ -2511,6 +2530,7 @@ def get_remote_driver(
2511
2530
  cap_file,
2512
2531
  cap_string,
2513
2532
  recorder_ext,
2533
+ disable_cookies,
2514
2534
  disable_js,
2515
2535
  disable_csp,
2516
2536
  enable_ws,
@@ -2522,6 +2542,7 @@ def get_remote_driver(
2522
2542
  log_cdp_events,
2523
2543
  no_sandbox,
2524
2544
  disable_gpu,
2545
+ headless1,
2525
2546
  headless2,
2526
2547
  incognito,
2527
2548
  guest_mode,
@@ -2646,6 +2667,7 @@ def get_remote_driver(
2646
2667
  multi_proxy,
2647
2668
  user_agent,
2648
2669
  recorder_ext,
2670
+ disable_cookies,
2649
2671
  disable_js,
2650
2672
  disable_csp,
2651
2673
  enable_ws,
@@ -2657,6 +2679,7 @@ def get_remote_driver(
2657
2679
  log_cdp_events,
2658
2680
  no_sandbox,
2659
2681
  disable_gpu,
2682
+ headless1,
2660
2683
  headless2,
2661
2684
  incognito,
2662
2685
  guest_mode,
@@ -2740,6 +2763,7 @@ def get_remote_driver(
2740
2763
  proxy_bypass_list,
2741
2764
  proxy_pac_url,
2742
2765
  user_agent,
2766
+ disable_cookies,
2743
2767
  disable_js,
2744
2768
  disable_csp,
2745
2769
  firefox_arg,
@@ -2818,6 +2842,7 @@ def get_remote_driver(
2818
2842
  multi_proxy,
2819
2843
  user_agent,
2820
2844
  recorder_ext,
2845
+ disable_cookies,
2821
2846
  disable_js,
2822
2847
  disable_csp,
2823
2848
  enable_ws,
@@ -2829,6 +2854,7 @@ def get_remote_driver(
2829
2854
  log_cdp_events,
2830
2855
  no_sandbox,
2831
2856
  disable_gpu,
2857
+ headless1,
2832
2858
  headless2,
2833
2859
  incognito,
2834
2860
  guest_mode,
@@ -2937,6 +2963,7 @@ def get_local_driver(
2937
2963
  multi_proxy,
2938
2964
  user_agent,
2939
2965
  recorder_ext,
2966
+ disable_cookies,
2940
2967
  disable_js,
2941
2968
  disable_csp,
2942
2969
  enable_ws,
@@ -2948,6 +2975,7 @@ def get_local_driver(
2948
2975
  log_cdp_events,
2949
2976
  no_sandbox,
2950
2977
  disable_gpu,
2978
+ headless1,
2951
2979
  headless2,
2952
2980
  incognito,
2953
2981
  guest_mode,
@@ -3017,6 +3045,7 @@ def get_local_driver(
3017
3045
  proxy_bypass_list,
3018
3046
  proxy_pac_url,
3019
3047
  user_agent,
3048
+ disable_cookies,
3020
3049
  disable_js,
3021
3050
  disable_csp,
3022
3051
  firefox_arg,
@@ -3373,6 +3402,8 @@ def get_local_driver(
3373
3402
  prefs["intl.accept_languages"] = locale_code
3374
3403
  if block_images:
3375
3404
  prefs["profile.managed_default_content_settings.images"] = 2
3405
+ if disable_cookies:
3406
+ prefs["profile.default_content_setting_values.cookies"] = 2
3376
3407
  if disable_js:
3377
3408
  prefs["profile.managed_default_content_settings.javascript"] = 2
3378
3409
  if do_not_track:
@@ -3425,8 +3456,14 @@ def get_local_driver(
3425
3456
  else:
3426
3457
  pass # Will need Xvfb on Linux
3427
3458
  elif headless:
3428
- if "--headless" not in edge_options.arguments:
3429
- edge_options.add_argument("--headless")
3459
+ if (
3460
+ "--headless" not in edge_options.arguments
3461
+ and "--headless=old" not in edge_options.arguments
3462
+ ):
3463
+ if headless1:
3464
+ edge_options.add_argument("--headless=old")
3465
+ else:
3466
+ edge_options.add_argument("--headless")
3430
3467
  if mobile_emulator and not is_using_uc(undetectable, browser_name):
3431
3468
  emulator_settings = {}
3432
3469
  device_metrics = {}
@@ -3777,6 +3814,7 @@ def get_local_driver(
3777
3814
  multi_proxy,
3778
3815
  user_agent,
3779
3816
  recorder_ext,
3817
+ disable_cookies,
3780
3818
  disable_js,
3781
3819
  disable_csp,
3782
3820
  enable_ws,
@@ -3788,6 +3826,7 @@ def get_local_driver(
3788
3826
  log_cdp_events,
3789
3827
  no_sandbox,
3790
3828
  disable_gpu,
3829
+ headless1,
3791
3830
  headless2,
3792
3831
  incognito,
3793
3832
  guest_mode,
@@ -3960,8 +3999,14 @@ def get_local_driver(
3960
3999
  except Exception:
3961
4000
  pass # Will need Xvfb on Linux
3962
4001
  elif headless:
3963
- if "--headless" not in chrome_options.arguments:
3964
- chrome_options.add_argument("--headless")
4002
+ if (
4003
+ "--headless" not in chrome_options.arguments
4004
+ and "--headless=old" not in chrome_options.arguments
4005
+ ):
4006
+ if headless1:
4007
+ chrome_options.add_argument("--headless=old")
4008
+ else:
4009
+ chrome_options.add_argument("--headless")
3965
4010
  if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
3966
4011
  try:
3967
4012
  make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
@@ -4227,6 +4272,12 @@ def get_local_driver(
4227
4272
  chrome_options.arguments.remove(
4228
4273
  "--headless"
4229
4274
  )
4275
+ if "--headless=old" in (
4276
+ chrome_options.arguments
4277
+ ):
4278
+ chrome_options.arguments.remove(
4279
+ "--headless=old"
4280
+ )
4230
4281
  uc_chrome_version = None
4231
4282
  if (
4232
4283
  use_version.isnumeric()
@@ -4289,6 +4340,7 @@ def get_local_driver(
4289
4340
  None, # multi_proxy
4290
4341
  None, # user_agent
4291
4342
  None, # recorder_ext
4343
+ disable_cookies,
4292
4344
  disable_js,
4293
4345
  disable_csp,
4294
4346
  enable_ws,
@@ -4300,6 +4352,7 @@ def get_local_driver(
4300
4352
  False, # log_cdp_events
4301
4353
  no_sandbox,
4302
4354
  disable_gpu,
4355
+ False, # headless1
4303
4356
  False, # headless2
4304
4357
  incognito,
4305
4358
  guest_mode,
@@ -4530,6 +4583,7 @@ def get_local_driver(
4530
4583
  None, # multi_proxy
4531
4584
  None, # user_agent
4532
4585
  None, # recorder_ext
4586
+ disable_cookies,
4533
4587
  disable_js,
4534
4588
  disable_csp,
4535
4589
  enable_ws,
@@ -4541,6 +4595,7 @@ def get_local_driver(
4541
4595
  False, # log_cdp_events
4542
4596
  no_sandbox,
4543
4597
  disable_gpu,
4598
+ False, # headless1
4544
4599
  False, # headless2
4545
4600
  incognito,
4546
4601
  guest_mode,
@@ -4792,6 +4847,8 @@ def get_local_driver(
4792
4847
  )
4793
4848
  if "--headless" in chrome_options.arguments:
4794
4849
  chrome_options.arguments.remove("--headless")
4850
+ if "--headless=old" in chrome_options.arguments:
4851
+ chrome_options.arguments.remove("--headless=old")
4795
4852
  service = ChromeService(
4796
4853
  log_output=os.devnull,
4797
4854
  service_args=["--disable-build-check"]
@@ -161,6 +161,17 @@ class DriverMethods():
161
161
  self.driver, *args, **kwargs
162
162
  )
163
163
 
164
+ def is_valid_url(self, url):
165
+ """Return True if the url is a valid url."""
166
+ return page_utils.is_valid_url(url)
167
+
168
+ def is_alert_present(self):
169
+ try:
170
+ self.driver.switch_to.alert
171
+ return True
172
+ except Exception:
173
+ return False
174
+
164
175
  def is_online(self):
165
176
  return self.driver.execute_script("return navigator.onLine;")
166
177