seleniumbase 4.28.0__tar.gz → 4.28.0a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/PKG-INFO +3 -3
  2. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/requirements.txt +2 -2
  3. seleniumbase-4.28.0a1/seleniumbase/__version__.py +2 -0
  4. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/behave/behave_sb.py +9 -11
  5. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/browser_launcher.py +7 -18
  6. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/base_case.py +4 -4
  7. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/driver_manager.py +0 -8
  8. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/pytest_plugin.py +9 -11
  9. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/sb_manager.py +2 -12
  10. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/selenium_plugin.py +10 -13
  11. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/__init__.py +0 -5
  12. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/PKG-INFO +3 -3
  13. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/requires.txt +2 -2
  14. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/setup.py +3 -3
  15. seleniumbase-4.28.0/seleniumbase/__version__.py +0 -2
  16. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/Workflows.md +0 -0
  17. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/workflows/pages.yml +0 -0
  18. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/workflows/python-nightly-mac.yml +0 -0
  19. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  20. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/workflows/python-nightly-windows.yml +0 -0
  21. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.github/workflows/python-package.yml +0 -0
  22. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/.gitignore +0 -0
  23. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/CHANGELOG.md +0 -0
  24. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/CNAME +0 -0
  25. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/CODE_OF_CONDUCT.md +0 -0
  26. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/CONTRIBUTING.md +0 -0
  27. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/Dockerfile +0 -0
  28. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/LICENSE +0 -0
  29. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/MANIFEST.in +0 -0
  30. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/README.md +0 -0
  31. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/SECURITY.md +0 -0
  32. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/_config.yml +0 -0
  33. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/azure-pipelines.yml +0 -0
  34. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/ReadMe.md +0 -0
  35. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/__init__.py +0 -0
  36. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/basic_test.py +0 -0
  37. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/ReadMe.md +0 -0
  38. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/__init__.py +0 -0
  39. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/behave.ini +0 -0
  40. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/__init__.py +0 -0
  41. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/behave.ini +0 -0
  42. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/calculator.feature +0 -0
  43. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/environment.py +0 -0
  44. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/fail_page.feature +0 -0
  45. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/realworld.feature +0 -0
  46. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/steps/__init__.py +0 -0
  47. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/steps/calculator.py +0 -0
  48. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  49. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/steps/imported.py +0 -0
  50. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  51. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/behave_bdd/features/swag_labs.feature +0 -0
  52. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/ReadMe.md +0 -0
  53. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/__init__.py +0 -0
  54. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/base_test_case.py +0 -0
  55. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/boilerplate_test.py +0 -0
  56. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/classic_obj_test.py +0 -0
  57. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/page_objects.py +0 -0
  58. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/__init__.py +0 -0
  59. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  60. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  61. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  62. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  63. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/google_objects.py +0 -0
  64. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/google_test.py +0 -0
  65. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  66. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  67. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/samples/test_page_objects.py +0 -0
  68. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/boilerplates/sb_fixture_test.py +0 -0
  69. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/ReadMe.md +0 -0
  70. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/mac_cap_file.py +0 -0
  71. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/sample_cap_file_BS.py +0 -0
  72. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/sample_cap_file_SL.py +0 -0
  73. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/selenoid_cap_file.py +0 -0
  74. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/capabilities/win10_cap_file.py +0 -0
  75. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  76. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  77. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  78. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  79. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  80. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  81. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  82. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  83. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/case_summary.md +0 -0
  84. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/ReadMe.md +0 -0
  85. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/chart_presentation.py +0 -0
  86. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/my_chart.py +0 -0
  87. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/pie_charts.py +0 -0
  88. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/test_area_chart.py +0 -0
  89. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/test_display_chart.py +0 -0
  90. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/test_line_chart.py +0 -0
  91. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/test_multi_series.py +0 -0
  92. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/chart_maker/test_save_chart.py +0 -0
  93. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/coffee_cart_tests.py +0 -0
  94. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/custom_settings.py +0 -0
  95. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/desktop_apps/ReadMe.md +0 -0
  96. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/desktop_apps/recorder.py +0 -0
  97. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/dialog_boxes/ReadMe.md +0 -0
  98. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  99. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/edge_test.py +0 -0
  100. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/example_config.cfg +0 -0
  101. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/example_logs/ReadMe.md +0 -0
  102. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/example_logs/basic_test_info.txt +0 -0
  103. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/example_logs/page_source.html +0 -0
  104. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/example_logs/screenshot.png +0 -0
  105. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/github_test.py +0 -0
  106. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/gui_test_runner.py +0 -0
  107. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/hack_the_planet.py +0 -0
  108. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/handle_alert_test.py +0 -0
  109. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/iframe_tests.py +0 -0
  110. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/locale_code_test.py +0 -0
  111. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/master_qa/ReadMe.md +0 -0
  112. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/master_qa/__init__.py +0 -0
  113. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  114. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/master_qa/masterqa_test_1.py +0 -0
  115. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/master_qa/pytest.ini +0 -0
  116. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/__init__.py +0 -0
  117. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/ReadMe.md +0 -0
  118. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/__init__.py +0 -0
  119. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/example_spec.js +0 -0
  120. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/example_test.py +0 -0
  121. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/input_spec.js +0 -0
  122. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/input_test.py +0 -0
  123. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  124. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/protractor/mat_paginator_test.py +0 -0
  125. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/ReadMe.md +0 -0
  126. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/__init__.py +0 -0
  127. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  128. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  129. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/messy_raw.py +0 -0
  130. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/pytest.ini +0 -0
  131. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/refined_raw.py +0 -0
  132. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  133. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/my_first_test.py +0 -0
  134. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/nth_child_test.py +0 -0
  135. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/__init__.py +0 -0
  136. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/demo_page.html +0 -0
  137. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/load_html_test.py +0 -0
  138. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/test_demo_page.py +0 -0
  139. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/test_handle_alerts.py +0 -0
  140. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/test_request_fixture.py +0 -0
  141. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/offline_examples/test_user_agent.py +0 -0
  142. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/old_wordle_script.py +0 -0
  143. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/parameterized_test.py +0 -0
  144. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/performance_test.py +0 -0
  145. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/ReadMe.md +0 -0
  146. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/core_presentation.py +0 -0
  147. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/edge_presentation.py +0 -0
  148. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/fundamentals.py +0 -0
  149. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/my_presentation.py +0 -0
  150. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/presenter/py_virtual_envs.py +0 -0
  151. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/proxy_test.py +0 -0
  152. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/pytest.ini +0 -0
  153. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/rate_limiting_test.py +0 -0
  154. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_call.py +0 -0
  155. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_driver_context.py +0 -0
  156. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_file_call.py +0 -0
  157. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_main_call.py +0 -0
  158. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_parameter_script.py +0 -0
  159. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_sb.py +0 -0
  160. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_test_scripts.py +0 -0
  161. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/raw_uc_mode.py +0 -0
  162. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/setup.cfg +0 -0
  163. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/shadow_root_test.py +0 -0
  164. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/swag_labs_user_tests.py +0 -0
  165. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_apple_site.py +0 -0
  166. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_assert_elements.py +0 -0
  167. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_calculator.py +0 -0
  168. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_canvas.py +0 -0
  169. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_checkboxes.py +0 -0
  170. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_chinese_pdf.py +0 -0
  171. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_chromedriver.py +0 -0
  172. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_coffee_cart.py +0 -0
  173. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_console_logging.py +0 -0
  174. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_contains_selector.py +0 -0
  175. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_cycle_elements.py +0 -0
  176. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_decryption.py +0 -0
  177. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_deferred_asserts.py +0 -0
  178. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_demo_site.py +0 -0
  179. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_detect_404s.py +0 -0
  180. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_docs_site.py +0 -0
  181. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_double_click.py +0 -0
  182. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_download_files.py +0 -0
  183. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_download_images.py +0 -0
  184. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_drag_and_drop.py +0 -0
  185. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_error_page.py +0 -0
  186. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_event_firing.py +0 -0
  187. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_fail.py +0 -0
  188. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_geolocation.py +0 -0
  189. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_get_coffee.py +0 -0
  190. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_get_locale_code.py +0 -0
  191. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_get_pdf_text.py +0 -0
  192. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_get_user_agent.py +0 -0
  193. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_hack_search.py +0 -0
  194. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_image_saving.py +0 -0
  195. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_inspect_html.py +0 -0
  196. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_login.py +0 -0
  197. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_markers.py +0 -0
  198. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_mfa_login.py +0 -0
  199. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_multiple_drivers.py +0 -0
  200. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_null.py +0 -0
  201. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_override_driver.py +0 -0
  202. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_override_sb_fixture.py +0 -0
  203. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_parse_soup.py +0 -0
  204. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_pdf_asserts.py +0 -0
  205. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_pytest_parametrize.py +0 -0
  206. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_repeat_tests.py +0 -0
  207. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_request_sb_fixture.py +0 -0
  208. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_save_screenshots.py +0 -0
  209. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_sb_fixture.py +0 -0
  210. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_scrape_bing.py +0 -0
  211. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_select_options.py +0 -0
  212. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_shadow_dom.py +0 -0
  213. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_show_file_choosers.py +0 -0
  214. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_skype_site.py +0 -0
  215. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_suite.py +0 -0
  216. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_swag_labs.py +0 -0
  217. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_tinymce.py +0 -0
  218. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_todomvc.py +0 -0
  219. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_url_asserts.py +0 -0
  220. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_usefixtures.py +0 -0
  221. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_verify_chromedriver.py +0 -0
  222. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_window_switching.py +0 -0
  223. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_xfail.py +0 -0
  224. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/test_xkcd.py +0 -0
  225. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/time_limit_test.py +0 -0
  226. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/ReadMe.md +0 -0
  227. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  228. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  229. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  230. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/google_tour.py +0 -0
  231. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  232. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/introjs_google_tour.py +0 -0
  233. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/maps_introjs_tour.py +0 -0
  234. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/octocat_tour.py +0 -0
  235. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/shepherd_google_tour.py +0 -0
  236. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/tour_examples/xkcd_tour.py +0 -0
  237. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/ReadMe.md +0 -0
  238. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/chinese_test_1.py +0 -0
  239. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/dutch_test_1.py +0 -0
  240. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/english_test_1.py +0 -0
  241. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/french_test_1.py +0 -0
  242. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/italian_test_1.py +0 -0
  243. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/japanese_test_1.py +0 -0
  244. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/korean_test_1.py +0 -0
  245. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/portuguese_test_1.py +0 -0
  246. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/pytest.ini +0 -0
  247. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/russian_test_1.py +0 -0
  248. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/translations/spanish_test_1.py +0 -0
  249. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/uc_cdp_events.py +0 -0
  250. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/unit_tests/ReadMe.md +0 -0
  251. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/unit_tests/verify_framework.py +0 -0
  252. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/upgrade_chromedriver.py +0 -0
  253. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/upload_file_test.py +0 -0
  254. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/user_agent_test.py +0 -0
  255. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/verify_undetected.py +0 -0
  256. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/ReadMe.md +0 -0
  257. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/__init__.py +0 -0
  258. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  259. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  260. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  261. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  262. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  263. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  264. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/layout_test.py +0 -0
  265. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/python_home_test.py +0 -0
  266. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/test_layout_fail.py +0 -0
  267. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/visual_testing/xkcd_visual_test.py +0 -0
  268. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/wordle_test.py +0 -0
  269. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/xpath_test.py +0 -0
  270. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/examples/youtube_search_test.py +0 -0
  271. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/ReadMe.md +0 -0
  272. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/behave_gui.md +0 -0
  273. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/case_plans.md +0 -0
  274. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/chinese.md +0 -0
  275. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/commander.md +0 -0
  276. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/customizing_test_runs.md +0 -0
  277. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/demo_mode.md +0 -0
  278. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/desired_capabilities.md +0 -0
  279. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/features_list.md +0 -0
  280. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/handling_iframes.md +0 -0
  281. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/happy_customers.md +0 -0
  282. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/hidden_files_info.md +0 -0
  283. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/how_it_works.md +0 -0
  284. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/html_inspector.md +0 -0
  285. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/install.md +0 -0
  286. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/install_python_pip_git.md +0 -0
  287. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/js_package_manager.md +0 -0
  288. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/locale_codes.md +0 -0
  289. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/method_summary.md +0 -0
  290. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/mobile_testing.md +0 -0
  291. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/mysql_installation.md +0 -0
  292. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/recorder_mode.md +0 -0
  293. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/shadow_dom.md +0 -0
  294. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/syntax_formats.md +0 -0
  295. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/thank_you.md +0 -0
  296. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/translations.md +0 -0
  297. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/useful_grep_commands.md +0 -0
  298. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/using_safari_driver.md +0 -0
  299. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/verify_webdriver.md +0 -0
  300. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/virtualenv_instructions.md +0 -0
  301. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/help_docs/webdriver_installation.md +0 -0
  302. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/install.sh +0 -0
  303. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/__init__.py +0 -0
  304. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  305. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/azure/jenkins/ReadMe.md +0 -0
  306. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/ReadMe.md +0 -0
  307. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/behave.ini +0 -0
  308. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/__init__.py +0 -0
  309. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/behave.ini +0 -0
  310. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/calculator.feature +0 -0
  311. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/environment.py +0 -0
  312. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/fail_page.feature +0 -0
  313. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/realworld.feature +0 -0
  314. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/steps/__init__.py +0 -0
  315. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/steps/calculator.py +0 -0
  316. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/steps/fail_page.py +0 -0
  317. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/steps/real_world.py +0 -0
  318. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/steps/swag_labs.py +0 -0
  319. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/behave/features/swag_labs.feature +0 -0
  320. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/brython/ReadMe.md +0 -0
  321. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/brython/index.html +0 -0
  322. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/brython/index.py +0 -0
  323. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/brython/library.html +0 -0
  324. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/docker/ReadMe.md +0 -0
  325. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/docker/docker-entrypoint.sh +0 -0
  326. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  327. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/github/ReadMe.md +0 -0
  328. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/github/workflows/ReadMe.md +0 -0
  329. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/github/workflows/extras.md +0 -0
  330. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/google_cloud/ReadMe.md +0 -0
  331. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/katalon/ReadMe.md +0 -0
  332. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/linux/Linuxfile.sh +0 -0
  333. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/linux/ReadMe.md +0 -0
  334. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/linux/Xvfb_launcher.sh +0 -0
  335. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/linux/jenkins_permissions.sh +0 -0
  336. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/linux/tomcat_permissions.sh +0 -0
  337. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/ReadMe.md +0 -0
  338. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/__init__.py +0 -0
  339. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/index.html +0 -0
  340. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/my_first_test.py +0 -0
  341. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/npm-shrinkwrap.json +0 -0
  342. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/package.json +0 -0
  343. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/server.js +0 -0
  344. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/node_js/test_demo_site.py +0 -0
  345. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/selenium_grid/ReadMe.md +0 -0
  346. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/integrations/selenium_ide/ReadMe.md +0 -0
  347. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs.yml +0 -0
  348. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/ReadMe.txt +0 -0
  349. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/docs_instructions.txt +0 -0
  350. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/dash_pie.png +0 -0
  351. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/dash_pie_2.png +0 -0
  352. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/dash_pie_3.png +0 -0
  353. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/favicon.ico +0 -0
  354. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/grad_logo.png +0 -0
  355. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/green_icon.png +0 -0
  356. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/green_logo.png +0 -0
  357. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/green_logo2.png +0 -0
  358. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/green_logo3.png +0 -0
  359. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo3.png +0 -0
  360. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo3a.png +0 -0
  361. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo3b.png +0 -0
  362. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo3c.png +0 -0
  363. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo4.png +0 -0
  364. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo5.png +0 -0
  365. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo6.png +0 -0
  366. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/logo7.png +0 -0
  367. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/sb_icon.png +0 -0
  368. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/sb_logo_10.png +0 -0
  369. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/sb_logo_7.png +0 -0
  370. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/side_by_side.png +0 -0
  371. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/social/share_facebook.svg +0 -0
  372. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/social/share_github.svg +0 -0
  373. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/social/share_gitter.svg +0 -0
  374. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/social/share_instagram.svg +0 -0
  375. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/img/social/share_twitter.svg +0 -0
  376. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/index.txt +0 -0
  377. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/prepare.py +0 -0
  378. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/mkdocs_build/requirements.txt +0 -0
  379. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/pytest.ini +0 -0
  380. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/sbase/ReadMe.txt +0 -0
  381. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/sbase/__init__.py +0 -0
  382. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/sbase/__main__.py +0 -0
  383. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/sbase/steps.py +0 -0
  384. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/ReadMe.md +0 -0
  385. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/__init__.py +0 -0
  386. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/__main__.py +0 -0
  387. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/behave/__init__.py +0 -0
  388. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/behave/behave_helper.py +0 -0
  389. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/behave/steps.py +0 -0
  390. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/ReadMe.md +0 -0
  391. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/__init__.py +0 -0
  392. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/decorators.py +0 -0
  393. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/encryption.py +0 -0
  394. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/exceptions.py +0 -0
  395. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/obfuscate.py +0 -0
  396. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/common/unobfuscate.py +0 -0
  397. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/config/__init__.py +0 -0
  398. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/config/ad_block_list.py +0 -0
  399. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/config/proxy_list.py +0 -0
  400. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/config/settings.py +0 -0
  401. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/ReadMe.md +0 -0
  402. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/__init__.py +0 -0
  403. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/logo_helper.py +0 -0
  404. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/rich_helper.py +0 -0
  405. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/run.py +0 -0
  406. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  407. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  408. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_commander.py +0 -0
  409. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_install.py +0 -0
  410. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  411. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  412. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  413. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  414. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  415. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  416. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_print.py +0 -0
  417. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  418. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/__init__.py +0 -0
  419. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/application_manager.py +0 -0
  420. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/capabilities_parser.py +0 -0
  421. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/colored_traceback.py +0 -0
  422. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/create_db_tables.sql +0 -0
  423. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/detect_b_ver.py +0 -0
  424. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/download_helper.py +0 -0
  425. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/encoded_images.py +0 -0
  426. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/jqc_helper.py +0 -0
  427. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/log_helper.py +0 -0
  428. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/mysql.py +0 -0
  429. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/proxy_helper.py +0 -0
  430. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/recorder_helper.py +0 -0
  431. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/report_helper.py +0 -0
  432. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/s3_manager.py +0 -0
  433. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/sb_driver.py +0 -0
  434. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/session_helper.py +0 -0
  435. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/settings_parser.py +0 -0
  436. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/style_sheet.py +0 -0
  437. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/testcase_manager.py +0 -0
  438. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/tour_helper.py +0 -0
  439. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/core/visual_helper.py +0 -0
  440. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/drivers/ReadMe.md +0 -0
  441. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/drivers/__init__.py +0 -0
  442. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/ReadMe.md +0 -0
  443. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/__init__.py +0 -0
  444. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/ad_block.zip +0 -0
  445. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/disable_csp.zip +0 -0
  446. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/recorder.zip +0 -0
  447. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/extensions/sbase_ext.zip +0 -0
  448. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/__init__.py +0 -0
  449. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/constants.py +0 -0
  450. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  451. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/errors.py +0 -0
  452. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/js_utils.py +0 -0
  453. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/page_actions.py +0 -0
  454. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/page_utils.py +0 -0
  455. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/shared_utils.py +0 -0
  456. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/unittest_helper.py +0 -0
  457. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/words.py +0 -0
  458. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  459. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/js_code/__init__.py +0 -0
  460. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/js_code/active_css_js.py +0 -0
  461. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/js_code/live_js.py +0 -0
  462. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/js_code/recorder_js.py +0 -0
  463. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/masterqa/ReadMe.md +0 -0
  464. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/masterqa/__init__.py +0 -0
  465. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/masterqa/master_qa.py +0 -0
  466. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/__init__.py +0 -0
  467. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/base_plugin.py +0 -0
  468. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/basic_test_info.py +0 -0
  469. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  470. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/page_source.py +0 -0
  471. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  472. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/plugins/screen_shots.py +0 -0
  473. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/resources/ReadMe.md +0 -0
  474. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/resources/__init__.py +0 -0
  475. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/resources/favicon.ico +0 -0
  476. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/__init__.py +0 -0
  477. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/chinese.py +0 -0
  478. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/dutch.py +0 -0
  479. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/french.py +0 -0
  480. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/italian.py +0 -0
  481. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/japanese.py +0 -0
  482. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/korean.py +0 -0
  483. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/master_dict.py +0 -0
  484. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/portuguese.py +0 -0
  485. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/russian.py +0 -0
  486. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/spanish.py +0 -0
  487. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/translate/translator.py +0 -0
  488. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/cdp.py +0 -0
  489. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/dprocess.py +0 -0
  490. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/options.py +0 -0
  491. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/patcher.py +0 -0
  492. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/reactor.py +0 -0
  493. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/undetected/webelement.py +0 -0
  494. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/__init__.py +0 -0
  495. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  496. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  497. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  498. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  499. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  500. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  501. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  502. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  503. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  504. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  505. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  506. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  507. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  508. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  509. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  510. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/SOURCES.txt +0 -0
  511. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/dependency_links.txt +0 -0
  512. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/entry_points.txt +0 -0
  513. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/seleniumbase.egg-info/top_level.txt +0 -0
  514. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/setup.cfg +0 -0
  515. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/virtualenv_install.sh +0 -0
  516. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/win_install.bat +0 -0
  517. {seleniumbase-4.28.0 → seleniumbase-4.28.0a1}/win_virtualenv.bat +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.28.0
3
+ Version: 4.28.0a1
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
@@ -70,7 +70,7 @@ Requires-Dist: attrs>=23.2.0
70
70
  Requires-Dist: certifi>=2024.6.2
71
71
  Requires-Dist: exceptiongroup>=1.2.1
72
72
  Requires-Dist: filelock>=3.12.2; python_version < "3.8"
73
- Requires-Dist: filelock>=3.15.4; python_version >= "3.8"
73
+ Requires-Dist: filelock>=3.15.3; python_version >= "3.8"
74
74
  Requires-Dist: platformdirs>=4.0.0; python_version < "3.8"
75
75
  Requires-Dist: platformdirs>=4.2.2; python_version >= "3.8"
76
76
  Requires-Dist: typing-extensions>=4.12.2; python_version >= "3.8"
@@ -138,7 +138,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
138
138
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
139
139
  Provides-Extra: coverage
140
140
  Requires-Dist: coverage==7.2.7; python_version < "3.8" and extra == "coverage"
141
- Requires-Dist: coverage>=7.5.4; python_version >= "3.8" and extra == "coverage"
141
+ Requires-Dist: coverage>=7.5.3; python_version >= "3.8" and extra == "coverage"
142
142
  Requires-Dist: pytest-cov==4.1.0; python_version < "3.8" and extra == "coverage"
143
143
  Requires-Dist: pytest-cov>=5.0.0; python_version >= "3.8" and extra == "coverage"
144
144
  Provides-Extra: flake8
@@ -10,7 +10,7 @@ attrs>=23.2.0
10
10
  certifi>=2024.6.2
11
11
  exceptiongroup>=1.2.1
12
12
  filelock>=3.12.2;python_version<"3.8"
13
- filelock>=3.15.4;python_version>="3.8"
13
+ filelock>=3.15.3;python_version>="3.8"
14
14
  platformdirs>=4.0.0;python_version<"3.8"
15
15
  platformdirs>=4.2.2;python_version>="3.8"
16
16
  typing-extensions>=4.12.2;python_version>="3.8"
@@ -77,7 +77,7 @@ rich==13.7.1
77
77
  # ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
78
78
 
79
79
  coverage==7.2.7;python_version<"3.8"
80
- coverage>=7.5.4;python_version>="3.8"
80
+ coverage>=7.5.3;python_version>="3.8"
81
81
  pytest-cov==4.1.0;python_version<"3.8"
82
82
  pytest-cov>=5.0.0;python_version>="3.8"
83
83
  flake8==5.0.4;python_version<"3.9"
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.28.0a1"
@@ -861,18 +861,16 @@ def get_configured_sb(context):
861
861
  and not sb.headless
862
862
  and not sb.headless2
863
863
  and not sb.xvfb
864
+ and not sb.undetectable
864
865
  ):
865
- if not sb.undetectable:
866
- print(
867
- '(Linux uses "-D headless" by default. '
868
- 'To override, use "-D headed" / "-D gui". '
869
- 'For Xvfb mode instead, use "-D xvfb". '
870
- "Or you can hide this info by using"
871
- '"-D headless" / "-D headless2" / "-D uc".)'
872
- )
873
- sb.headless = True
874
- else:
875
- sb.xvfb = True
866
+ print(
867
+ '(Linux uses "-D headless" by default. '
868
+ 'To override, use "-D headed" / "-D gui". '
869
+ 'For Xvfb mode instead, use "-D xvfb". '
870
+ "Or you can hide this info by using"
871
+ '"-D headless" / "-D headless2" / "-D uc".)'
872
+ )
873
+ sb.headless = True
876
874
  # Recorder Mode can still optimize scripts in --headless2 mode.
877
875
  if sb.recorder_mode and sb.headless:
878
876
  sb.headless = False
@@ -466,8 +466,8 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
466
466
  url = "https://" + url
467
467
  if (url.startswith("http:") or url.startswith("https:")):
468
468
  script = 'window.open("%s","_blank");' % url
469
- driver.execute_script(script)
470
- time.sleep(0.05)
469
+ js_utils.call_me_later(driver, script, 4)
470
+ time.sleep(0.007)
471
471
  driver.close()
472
472
  if reconnect_time == "disconnect":
473
473
  driver.disconnect()
@@ -496,8 +496,8 @@ def uc_open_with_disconnect(driver, url, timeout=None):
496
496
  url = "https://" + url
497
497
  if (url.startswith("http:") or url.startswith("https:")):
498
498
  script = 'window.open("%s","_blank");' % url
499
- driver.execute_script(script)
500
- time.sleep(0.05)
499
+ js_utils.call_me_later(driver, script, 4)
500
+ time.sleep(0.007)
501
501
  driver.close()
502
502
  driver.disconnect()
503
503
  min_timeout = 0.008
@@ -546,17 +546,7 @@ def uc_click(
546
546
  driver.reconnect(reconnect_time)
547
547
 
548
548
 
549
- def verify_pyautogui_has_a_headed_browser():
550
- """PyAutoGUI requires a headed browser so that it can
551
- focus on the correct element when performing actions."""
552
- if sb_config.headless or sb_config.headless2:
553
- raise Exception(
554
- "PyAutoGUI can't be used in headless mode!"
555
- )
556
-
557
-
558
549
  def install_pyautogui_if_missing():
559
- verify_pyautogui_has_a_headed_browser()
560
550
  pip_find_lock = fasteners.InterProcessLock(
561
551
  constants.PipInstall.FINDLOCK
562
552
  )
@@ -566,11 +556,10 @@ def install_pyautogui_if_missing():
566
556
  try:
567
557
  use_pyautogui_ver = constants.PyAutoGUI.VER
568
558
  if pyautogui.__version__ != use_pyautogui_ver:
569
- del pyautogui
570
559
  shared_utils.pip_install(
571
560
  "pyautogui", version=use_pyautogui_ver
572
561
  )
573
- import pyautogui
562
+ del pyautogui
574
563
  except Exception:
575
564
  pass
576
565
  except Exception:
@@ -1031,7 +1020,7 @@ def _set_chrome_options(
1031
1020
  prefs["download.prompt_for_download"] = False
1032
1021
  prefs["credentials_enable_service"] = False
1033
1022
  prefs["local_discovery.notifications_enabled"] = False
1034
- prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
1023
+ prefs["safebrowsing.enabled"] = True
1035
1024
  prefs["safebrowsing.disable_download_protection"] = True
1036
1025
  prefs["omnibox-max-zero-suggest-matches"] = 0
1037
1026
  prefs["omnibox-use-existing-autocomplete-client"] = 0
@@ -2622,7 +2611,7 @@ def get_local_driver(
2622
2611
  "credentials_enable_service": False,
2623
2612
  "local_discovery.notifications_enabled": False,
2624
2613
  "safebrowsing.disable_download_protection": True,
2625
- "safebrowsing.enabled": False, # Prevent PW "data breach" pop-ups
2614
+ "safebrowsing.enabled": True,
2626
2615
  "omnibox-max-zero-suggest-matches": 0,
2627
2616
  "omnibox-use-existing-autocomplete-client": 0,
2628
2617
  "omnibox-trending-zero-prefix-suggestions-on-ntp": 0,
@@ -6822,10 +6822,10 @@ class BaseCase(unittest.TestCase):
6822
6822
  try:
6823
6823
  import cryptography
6824
6824
  if cryptography.__version__ != "39.0.2":
6825
- del cryptography # To get newer ver
6826
6825
  shared_utils.pip_install(
6827
6826
  "cryptography", version="39.0.2"
6828
6827
  )
6828
+ del cryptography # To get newer ver
6829
6829
  import cryptography
6830
6830
  except Exception:
6831
6831
  shared_utils.pip_install(
@@ -13718,7 +13718,7 @@ class BaseCase(unittest.TestCase):
13718
13718
  which is the default mode on Linux unless using another arg."""
13719
13719
  if "linux" in sys.platform and (not self.headed or self.xvfb):
13720
13720
  from sbvirtualdisplay import Display
13721
- if self.undetectable and not (self.headless or self.headless2):
13721
+ if self.undetectable:
13722
13722
  import Xlib.display
13723
13723
  try:
13724
13724
  self._xvfb_display = Display(
@@ -13749,10 +13749,10 @@ class BaseCase(unittest.TestCase):
13749
13749
  try:
13750
13750
  use_pyautogui_ver = constants.PyAutoGUI.VER
13751
13751
  if pyautogui.__version__ != use_pyautogui_ver:
13752
- del pyautogui # To get newer ver
13753
13752
  shared_utils.pip_install(
13754
13753
  "pyautogui", version=use_pyautogui_ver
13755
13754
  )
13755
+ del pyautogui # To get newer ver
13756
13756
  import pyautogui
13757
13757
  except Exception:
13758
13758
  pass
@@ -15986,7 +15986,7 @@ class BaseCase(unittest.TestCase):
15986
15986
  if self.undetectable:
15987
15987
  try:
15988
15988
  self.driver.window_handles
15989
- except Exception:
15989
+ except urllib3.exceptions.MaxRetryError:
15990
15990
  self.driver.connect()
15991
15991
  self.__slow_mode_pause_if_active()
15992
15992
  has_exception = self.__has_exception()
@@ -387,14 +387,6 @@ def Driver(
387
387
  uc_cdp_events = True
388
388
  else:
389
389
  uc_cdp_events = False
390
- if undetectable and browser != "chrome":
391
- message = (
392
- '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
393
- '\n ("uc=True" / "undetectable=True" / "--uc")'
394
- '\n (Your browser choice was: "%s".)'
395
- '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
396
- )
397
- print(message)
398
390
  if headed is None:
399
391
  # Override the default headless mode on Linux if set.
400
392
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -1702,18 +1702,16 @@ def pytest_configure(config):
1702
1702
  and not sb_config.headless
1703
1703
  and not sb_config.headless2
1704
1704
  and not sb_config.xvfb
1705
+ and not sb_config.undetectable
1705
1706
  ):
1706
- if not sb_config.undetectable:
1707
- print(
1708
- "(Linux uses --headless by default. "
1709
- "To override, use --headed / --gui. "
1710
- "For Xvfb mode instead, use --xvfb. "
1711
- "Or you can hide this info by using "
1712
- "--headless / --headless2 / --uc.)"
1713
- )
1714
- sb_config.headless = True
1715
- else:
1716
- sb_config.xvfb = True
1707
+ print(
1708
+ "(Linux uses --headless by default. "
1709
+ "To override, use --headed / --gui. "
1710
+ "For Xvfb mode instead, use --xvfb. "
1711
+ "Or you can hide this info by using "
1712
+ "--headless / --headless2 / --uc.)"
1713
+ )
1714
+ sb_config.headless = True
1717
1715
 
1718
1716
  # Recorder Mode can still optimize scripts in --headless2 mode.
1719
1717
  if sb_config.recorder_mode and sb_config.headless:
@@ -444,14 +444,6 @@ def SB(
444
444
  uc_cdp_events = True
445
445
  else:
446
446
  uc_cdp_events = False
447
- if undetectable and browser != "chrome":
448
- message = (
449
- '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
450
- '\n ("uc=True" / "undetectable=True" / "--uc")'
451
- '\n (Your browser choice was: "%s".)'
452
- '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
453
- )
454
- print(message)
455
447
  if headed is None:
456
448
  # Override the default headless mode on Linux if set.
457
449
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -464,11 +456,9 @@ def SB(
464
456
  and not headless
465
457
  and not headless2
466
458
  and not xvfb
459
+ and not undetectable
467
460
  ):
468
- if not undetectable:
469
- headless = True
470
- else:
471
- xvfb = True
461
+ headless = True
472
462
  if headless2 and browser == "firefox":
473
463
  headless2 = False # Only for Chromium browsers
474
464
  headless = True # Firefox has regular headless
@@ -1203,20 +1203,17 @@ class SeleniumBrowser(Plugin):
1203
1203
  and not self.options.headless
1204
1204
  and not self.options.headless2
1205
1205
  and not self.options.xvfb
1206
+ and not self.options.undetectable
1206
1207
  ):
1207
- if not self.options.undetectable:
1208
- print(
1209
- "(Linux uses --headless by default. "
1210
- "To override, use --headed / --gui. "
1211
- "For Xvfb mode instead, use --xvfb. "
1212
- "Or you can hide this info by using "
1213
- "--headless / --headless2 / --uc.)"
1214
- )
1215
- self.options.headless = True
1216
- test.test.headless = True
1217
- else:
1218
- self.options.xvfb = True
1219
- test.test.xvfb = True
1208
+ print(
1209
+ "(Linux uses --headless by default. "
1210
+ "To override, use --headed / --gui. "
1211
+ "For Xvfb mode instead, use --xvfb. "
1212
+ "Or you can hide this info by using "
1213
+ "--headless / --headless2 / --uc.)"
1214
+ )
1215
+ self.options.headless = True
1216
+ test.test.headless = True
1220
1217
  if self.options.use_wire and self.options.undetectable:
1221
1218
  print(
1222
1219
  "\n"
@@ -437,12 +437,10 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
437
437
  self.service.start()
438
438
  except Exception:
439
439
  pass
440
- time.sleep(0.012)
441
440
  try:
442
441
  self.start_session()
443
442
  except Exception:
444
443
  pass
445
- time.sleep(0.012)
446
444
 
447
445
  def disconnect(self):
448
446
  """Stops the chromedriver service that runs in the background.
@@ -452,7 +450,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
452
450
  self.service.stop()
453
451
  except Exception:
454
452
  pass
455
- time.sleep(0.012)
456
453
 
457
454
  def connect(self):
458
455
  """Starts the chromedriver service that runs in the background
@@ -462,12 +459,10 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
462
459
  self.service.start()
463
460
  except Exception:
464
461
  pass
465
- time.sleep(0.012)
466
462
  try:
467
463
  self.start_session()
468
464
  except Exception:
469
465
  pass
470
- time.sleep(0.012)
471
466
 
472
467
  def start_session(self, capabilities=None):
473
468
  if not capabilities:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.28.0
3
+ Version: 4.28.0a1
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
@@ -70,7 +70,7 @@ Requires-Dist: attrs>=23.2.0
70
70
  Requires-Dist: certifi>=2024.6.2
71
71
  Requires-Dist: exceptiongroup>=1.2.1
72
72
  Requires-Dist: filelock>=3.12.2; python_version < "3.8"
73
- Requires-Dist: filelock>=3.15.4; python_version >= "3.8"
73
+ Requires-Dist: filelock>=3.15.3; python_version >= "3.8"
74
74
  Requires-Dist: platformdirs>=4.0.0; python_version < "3.8"
75
75
  Requires-Dist: platformdirs>=4.2.2; python_version >= "3.8"
76
76
  Requires-Dist: typing-extensions>=4.12.2; python_version >= "3.8"
@@ -138,7 +138,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
138
138
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
139
139
  Provides-Extra: coverage
140
140
  Requires-Dist: coverage==7.2.7; python_version < "3.8" and extra == "coverage"
141
- Requires-Dist: coverage>=7.5.4; python_version >= "3.8" and extra == "coverage"
141
+ Requires-Dist: coverage>=7.5.3; python_version >= "3.8" and extra == "coverage"
142
142
  Requires-Dist: pytest-cov==4.1.0; python_version < "3.8" and extra == "coverage"
143
143
  Requires-Dist: pytest-cov>=5.0.0; python_version >= "3.8" and extra == "coverage"
144
144
  Provides-Extra: flake8
@@ -69,7 +69,7 @@ pip>=24.1
69
69
  packaging>=24.1
70
70
  setuptools>=70.1.0
71
71
  wheel>=0.43.0
72
- filelock>=3.15.4
72
+ filelock>=3.15.3
73
73
  platformdirs>=4.2.2
74
74
  typing-extensions>=4.12.2
75
75
  trio==0.25.1
@@ -97,7 +97,7 @@ coverage==7.2.7
97
97
  pytest-cov==4.1.0
98
98
 
99
99
  [coverage:python_version >= "3.8"]
100
- coverage>=7.5.4
100
+ coverage>=7.5.3
101
101
  pytest-cov>=5.0.0
102
102
 
103
103
  [flake8]
@@ -34,7 +34,7 @@ if sys.argv[-1] == "publish":
34
34
  print("\nERROR! Publishing to PyPI requires Python>=3.9")
35
35
  sys.exit()
36
36
  print("\n*** Checking code health with flake8:\n")
37
- os.system("python -m pip install 'flake8==7.1.0'")
37
+ os.system("python -m pip install 'flake8==7.0.0'")
38
38
  flake8_status = os.system("flake8 --exclude=recordings,temp")
39
39
  if flake8_status != 0:
40
40
  print("\nERROR! Fix flake8 issues before publishing to PyPI!\n")
@@ -158,7 +158,7 @@ setup(
158
158
  "certifi>=2024.6.2",
159
159
  "exceptiongroup>=1.2.1",
160
160
  'filelock>=3.12.2;python_version<"3.8"',
161
- 'filelock>=3.15.4;python_version>="3.8"',
161
+ 'filelock>=3.15.3;python_version>="3.8"',
162
162
  'platformdirs>=4.0.0;python_version<"3.8"',
163
163
  'platformdirs>=4.2.2;python_version>="3.8"',
164
164
  'typing-extensions>=4.12.2;python_version>="3.8"',
@@ -234,7 +234,7 @@ setup(
234
234
  # Usage: coverage run -m pytest; coverage html; coverage report
235
235
  "coverage": [
236
236
  'coverage==7.2.7;python_version<"3.8"',
237
- 'coverage>=7.5.4;python_version>="3.8"',
237
+ 'coverage>=7.5.3;python_version>="3.8"',
238
238
  'pytest-cov==4.1.0;python_version<"3.8"',
239
239
  'pytest-cov>=5.0.0;python_version>="3.8"',
240
240
  ],
@@ -1,2 +0,0 @@
1
- # seleniumbase package
2
- __version__ = "4.28.0"
File without changes
File without changes
File without changes