seleniumbase 4.28.0a3__tar.gz → 4.28.1__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.0a3 → seleniumbase-4.28.1}/Dockerfile +47 -26
  2. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/PKG-INFO +5 -5
  3. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/uc_cdp_events.py +2 -3
  4. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/requirements.txt +4 -4
  5. seleniumbase-4.28.1/seleniumbase/__version__.py +2 -0
  6. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/browser_launcher.py +8 -3
  7. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/shared_utils.py +11 -11
  8. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/driver_manager.py +14 -0
  9. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/sb_manager.py +14 -0
  10. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/PKG-INFO +5 -5
  11. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/requires.txt +4 -4
  12. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/setup.py +4 -4
  13. seleniumbase-4.28.0a3/seleniumbase/__version__.py +0 -2
  14. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/Workflows.md +0 -0
  15. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/workflows/pages.yml +0 -0
  16. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/workflows/python-nightly-mac.yml +0 -0
  17. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  18. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/workflows/python-nightly-windows.yml +0 -0
  19. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.github/workflows/python-package.yml +0 -0
  20. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/.gitignore +0 -0
  21. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/CHANGELOG.md +0 -0
  22. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/CNAME +0 -0
  23. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/CODE_OF_CONDUCT.md +0 -0
  24. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/CONTRIBUTING.md +0 -0
  25. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/LICENSE +0 -0
  26. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/MANIFEST.in +0 -0
  27. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/README.md +0 -0
  28. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/SECURITY.md +0 -0
  29. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/_config.yml +0 -0
  30. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/azure-pipelines.yml +0 -0
  31. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/ReadMe.md +0 -0
  32. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/__init__.py +0 -0
  33. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/basic_test.py +0 -0
  34. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/ReadMe.md +0 -0
  35. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/__init__.py +0 -0
  36. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/behave.ini +0 -0
  37. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/__init__.py +0 -0
  38. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/behave.ini +0 -0
  39. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/calculator.feature +0 -0
  40. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/environment.py +0 -0
  41. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/fail_page.feature +0 -0
  42. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/realworld.feature +0 -0
  43. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/steps/__init__.py +0 -0
  44. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/steps/calculator.py +0 -0
  45. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  46. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/steps/imported.py +0 -0
  47. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  48. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/behave_bdd/features/swag_labs.feature +0 -0
  49. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/ReadMe.md +0 -0
  50. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/__init__.py +0 -0
  51. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/base_test_case.py +0 -0
  52. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/boilerplate_test.py +0 -0
  53. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/classic_obj_test.py +0 -0
  54. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/page_objects.py +0 -0
  55. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/__init__.py +0 -0
  56. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  57. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  58. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  59. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  60. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/google_objects.py +0 -0
  61. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/google_test.py +0 -0
  62. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  63. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  64. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/samples/test_page_objects.py +0 -0
  65. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/boilerplates/sb_fixture_test.py +0 -0
  66. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/ReadMe.md +0 -0
  67. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/mac_cap_file.py +0 -0
  68. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/sample_cap_file_BS.py +0 -0
  69. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/sample_cap_file_SL.py +0 -0
  70. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/selenoid_cap_file.py +0 -0
  71. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/capabilities/win10_cap_file.py +0 -0
  72. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  73. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  74. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  75. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  76. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  77. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  78. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  79. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  80. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/case_summary.md +0 -0
  81. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/ReadMe.md +0 -0
  82. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/chart_presentation.py +0 -0
  83. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/my_chart.py +0 -0
  84. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/pie_charts.py +0 -0
  85. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/test_area_chart.py +0 -0
  86. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/test_display_chart.py +0 -0
  87. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/test_line_chart.py +0 -0
  88. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/test_multi_series.py +0 -0
  89. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/chart_maker/test_save_chart.py +0 -0
  90. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/coffee_cart_tests.py +0 -0
  91. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/custom_settings.py +0 -0
  92. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/desktop_apps/ReadMe.md +0 -0
  93. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/desktop_apps/recorder.py +0 -0
  94. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/dialog_boxes/ReadMe.md +0 -0
  95. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  96. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/edge_test.py +0 -0
  97. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/example_config.cfg +0 -0
  98. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/example_logs/ReadMe.md +0 -0
  99. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/example_logs/basic_test_info.txt +0 -0
  100. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/example_logs/page_source.html +0 -0
  101. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/example_logs/screenshot.png +0 -0
  102. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/github_test.py +0 -0
  103. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/gui_test_runner.py +0 -0
  104. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/hack_the_planet.py +0 -0
  105. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/handle_alert_test.py +0 -0
  106. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/iframe_tests.py +0 -0
  107. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/locale_code_test.py +0 -0
  108. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/master_qa/ReadMe.md +0 -0
  109. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/master_qa/__init__.py +0 -0
  110. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  111. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/master_qa/masterqa_test_1.py +0 -0
  112. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/master_qa/pytest.ini +0 -0
  113. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/__init__.py +0 -0
  114. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/ReadMe.md +0 -0
  115. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/__init__.py +0 -0
  116. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/example_spec.js +0 -0
  117. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/example_test.py +0 -0
  118. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/input_spec.js +0 -0
  119. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/input_test.py +0 -0
  120. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  121. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/protractor/mat_paginator_test.py +0 -0
  122. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/ReadMe.md +0 -0
  123. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/__init__.py +0 -0
  124. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  125. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  126. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/messy_raw.py +0 -0
  127. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/pytest.ini +0 -0
  128. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/refined_raw.py +0 -0
  129. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  130. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/my_first_test.py +0 -0
  131. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/nth_child_test.py +0 -0
  132. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/__init__.py +0 -0
  133. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/demo_page.html +0 -0
  134. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/load_html_test.py +0 -0
  135. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/test_demo_page.py +0 -0
  136. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/test_handle_alerts.py +0 -0
  137. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/test_request_fixture.py +0 -0
  138. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/offline_examples/test_user_agent.py +0 -0
  139. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/old_wordle_script.py +0 -0
  140. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/parameterized_test.py +0 -0
  141. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/performance_test.py +0 -0
  142. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/ReadMe.md +0 -0
  143. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/core_presentation.py +0 -0
  144. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/edge_presentation.py +0 -0
  145. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/fundamentals.py +0 -0
  146. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/my_presentation.py +0 -0
  147. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/presenter/py_virtual_envs.py +0 -0
  148. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/proxy_test.py +0 -0
  149. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/pytest.ini +0 -0
  150. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/rate_limiting_test.py +0 -0
  151. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_call.py +0 -0
  152. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_driver_context.py +0 -0
  153. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_file_call.py +0 -0
  154. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_main_call.py +0 -0
  155. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_parameter_script.py +0 -0
  156. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_sb.py +0 -0
  157. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_test_scripts.py +0 -0
  158. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/raw_uc_mode.py +0 -0
  159. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/setup.cfg +0 -0
  160. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/shadow_root_test.py +0 -0
  161. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/swag_labs_user_tests.py +0 -0
  162. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_apple_site.py +0 -0
  163. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_assert_elements.py +0 -0
  164. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_calculator.py +0 -0
  165. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_canvas.py +0 -0
  166. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_checkboxes.py +0 -0
  167. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_chinese_pdf.py +0 -0
  168. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_chromedriver.py +0 -0
  169. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_coffee_cart.py +0 -0
  170. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_console_logging.py +0 -0
  171. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_contains_selector.py +0 -0
  172. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_cycle_elements.py +0 -0
  173. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_decryption.py +0 -0
  174. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_deferred_asserts.py +0 -0
  175. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_demo_site.py +0 -0
  176. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_detect_404s.py +0 -0
  177. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_docs_site.py +0 -0
  178. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_double_click.py +0 -0
  179. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_download_files.py +0 -0
  180. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_download_images.py +0 -0
  181. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_drag_and_drop.py +0 -0
  182. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_error_page.py +0 -0
  183. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_event_firing.py +0 -0
  184. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_fail.py +0 -0
  185. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_geolocation.py +0 -0
  186. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_get_coffee.py +0 -0
  187. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_get_locale_code.py +0 -0
  188. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_get_pdf_text.py +0 -0
  189. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_get_user_agent.py +0 -0
  190. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_hack_search.py +0 -0
  191. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_image_saving.py +0 -0
  192. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_inspect_html.py +0 -0
  193. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_login.py +0 -0
  194. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_markers.py +0 -0
  195. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_mfa_login.py +0 -0
  196. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_multiple_drivers.py +0 -0
  197. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_null.py +0 -0
  198. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_override_driver.py +0 -0
  199. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_override_sb_fixture.py +0 -0
  200. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_parse_soup.py +0 -0
  201. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_pdf_asserts.py +0 -0
  202. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_pytest_parametrize.py +0 -0
  203. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_repeat_tests.py +0 -0
  204. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_request_sb_fixture.py +0 -0
  205. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_save_screenshots.py +0 -0
  206. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_sb_fixture.py +0 -0
  207. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_scrape_bing.py +0 -0
  208. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_select_options.py +0 -0
  209. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_shadow_dom.py +0 -0
  210. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_show_file_choosers.py +0 -0
  211. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_skype_site.py +0 -0
  212. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_suite.py +0 -0
  213. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_swag_labs.py +0 -0
  214. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_tinymce.py +0 -0
  215. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_todomvc.py +0 -0
  216. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_url_asserts.py +0 -0
  217. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_usefixtures.py +0 -0
  218. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_verify_chromedriver.py +0 -0
  219. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_window_switching.py +0 -0
  220. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_xfail.py +0 -0
  221. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/test_xkcd.py +0 -0
  222. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/time_limit_test.py +0 -0
  223. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/ReadMe.md +0 -0
  224. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  225. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  226. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  227. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/google_tour.py +0 -0
  228. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  229. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/introjs_google_tour.py +0 -0
  230. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/maps_introjs_tour.py +0 -0
  231. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/octocat_tour.py +0 -0
  232. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/shepherd_google_tour.py +0 -0
  233. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/tour_examples/xkcd_tour.py +0 -0
  234. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/ReadMe.md +0 -0
  235. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/chinese_test_1.py +0 -0
  236. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/dutch_test_1.py +0 -0
  237. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/english_test_1.py +0 -0
  238. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/french_test_1.py +0 -0
  239. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/italian_test_1.py +0 -0
  240. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/japanese_test_1.py +0 -0
  241. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/korean_test_1.py +0 -0
  242. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/portuguese_test_1.py +0 -0
  243. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/pytest.ini +0 -0
  244. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/russian_test_1.py +0 -0
  245. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/translations/spanish_test_1.py +0 -0
  246. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/unit_tests/ReadMe.md +0 -0
  247. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/unit_tests/verify_framework.py +0 -0
  248. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/upgrade_chromedriver.py +0 -0
  249. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/upload_file_test.py +0 -0
  250. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/user_agent_test.py +0 -0
  251. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/verify_undetected.py +0 -0
  252. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/ReadMe.md +0 -0
  253. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/__init__.py +0 -0
  254. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  255. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  256. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  257. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  258. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  259. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  260. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/layout_test.py +0 -0
  261. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/python_home_test.py +0 -0
  262. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/test_layout_fail.py +0 -0
  263. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/visual_testing/xkcd_visual_test.py +0 -0
  264. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/wordle_test.py +0 -0
  265. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/xpath_test.py +0 -0
  266. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/examples/youtube_search_test.py +0 -0
  267. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/ReadMe.md +0 -0
  268. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/behave_gui.md +0 -0
  269. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/case_plans.md +0 -0
  270. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/chinese.md +0 -0
  271. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/commander.md +0 -0
  272. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/customizing_test_runs.md +0 -0
  273. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/demo_mode.md +0 -0
  274. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/desired_capabilities.md +0 -0
  275. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/features_list.md +0 -0
  276. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/handling_iframes.md +0 -0
  277. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/happy_customers.md +0 -0
  278. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/hidden_files_info.md +0 -0
  279. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/how_it_works.md +0 -0
  280. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/html_inspector.md +0 -0
  281. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/install.md +0 -0
  282. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/install_python_pip_git.md +0 -0
  283. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/js_package_manager.md +0 -0
  284. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/locale_codes.md +0 -0
  285. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/method_summary.md +0 -0
  286. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/mobile_testing.md +0 -0
  287. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/mysql_installation.md +0 -0
  288. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/recorder_mode.md +0 -0
  289. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/shadow_dom.md +0 -0
  290. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/syntax_formats.md +0 -0
  291. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/thank_you.md +0 -0
  292. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/translations.md +0 -0
  293. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/useful_grep_commands.md +0 -0
  294. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/using_safari_driver.md +0 -0
  295. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/verify_webdriver.md +0 -0
  296. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/virtualenv_instructions.md +0 -0
  297. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/help_docs/webdriver_installation.md +0 -0
  298. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/install.sh +0 -0
  299. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/__init__.py +0 -0
  300. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  301. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/azure/jenkins/ReadMe.md +0 -0
  302. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/ReadMe.md +0 -0
  303. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/behave.ini +0 -0
  304. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/__init__.py +0 -0
  305. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/behave.ini +0 -0
  306. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/calculator.feature +0 -0
  307. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/environment.py +0 -0
  308. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/fail_page.feature +0 -0
  309. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/realworld.feature +0 -0
  310. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/steps/__init__.py +0 -0
  311. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/steps/calculator.py +0 -0
  312. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/steps/fail_page.py +0 -0
  313. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/steps/real_world.py +0 -0
  314. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/steps/swag_labs.py +0 -0
  315. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/behave/features/swag_labs.feature +0 -0
  316. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/brython/ReadMe.md +0 -0
  317. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/brython/index.html +0 -0
  318. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/brython/index.py +0 -0
  319. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/brython/library.html +0 -0
  320. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/docker/ReadMe.md +0 -0
  321. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/docker/docker-entrypoint.sh +0 -0
  322. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  323. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/github/ReadMe.md +0 -0
  324. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/github/workflows/ReadMe.md +0 -0
  325. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/github/workflows/extras.md +0 -0
  326. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/google_cloud/ReadMe.md +0 -0
  327. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/katalon/ReadMe.md +0 -0
  328. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/linux/Linuxfile.sh +0 -0
  329. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/linux/ReadMe.md +0 -0
  330. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/linux/Xvfb_launcher.sh +0 -0
  331. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/linux/jenkins_permissions.sh +0 -0
  332. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/linux/tomcat_permissions.sh +0 -0
  333. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/ReadMe.md +0 -0
  334. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/__init__.py +0 -0
  335. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/index.html +0 -0
  336. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/my_first_test.py +0 -0
  337. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/npm-shrinkwrap.json +0 -0
  338. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/package.json +0 -0
  339. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/server.js +0 -0
  340. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/node_js/test_demo_site.py +0 -0
  341. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/selenium_grid/ReadMe.md +0 -0
  342. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/integrations/selenium_ide/ReadMe.md +0 -0
  343. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs.yml +0 -0
  344. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/ReadMe.txt +0 -0
  345. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/docs_instructions.txt +0 -0
  346. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/dash_pie.png +0 -0
  347. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/dash_pie_2.png +0 -0
  348. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/dash_pie_3.png +0 -0
  349. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/favicon.ico +0 -0
  350. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/grad_logo.png +0 -0
  351. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/green_icon.png +0 -0
  352. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/green_logo.png +0 -0
  353. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/green_logo2.png +0 -0
  354. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/green_logo3.png +0 -0
  355. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo3.png +0 -0
  356. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo3a.png +0 -0
  357. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo3b.png +0 -0
  358. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo3c.png +0 -0
  359. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo4.png +0 -0
  360. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo5.png +0 -0
  361. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo6.png +0 -0
  362. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/logo7.png +0 -0
  363. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/sb_icon.png +0 -0
  364. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/sb_logo_10.png +0 -0
  365. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/sb_logo_7.png +0 -0
  366. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/side_by_side.png +0 -0
  367. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/social/share_facebook.svg +0 -0
  368. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/social/share_github.svg +0 -0
  369. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/social/share_gitter.svg +0 -0
  370. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/social/share_instagram.svg +0 -0
  371. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/img/social/share_twitter.svg +0 -0
  372. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/index.txt +0 -0
  373. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/prepare.py +0 -0
  374. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/mkdocs_build/requirements.txt +0 -0
  375. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/pytest.ini +0 -0
  376. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/sbase/ReadMe.txt +0 -0
  377. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/sbase/__init__.py +0 -0
  378. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/sbase/__main__.py +0 -0
  379. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/sbase/steps.py +0 -0
  380. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/ReadMe.md +0 -0
  381. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/__init__.py +0 -0
  382. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/__main__.py +0 -0
  383. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/behave/__init__.py +0 -0
  384. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/behave/behave_helper.py +0 -0
  385. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/behave/behave_sb.py +0 -0
  386. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/behave/steps.py +0 -0
  387. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/ReadMe.md +0 -0
  388. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/__init__.py +0 -0
  389. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/decorators.py +0 -0
  390. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/encryption.py +0 -0
  391. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/exceptions.py +0 -0
  392. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/obfuscate.py +0 -0
  393. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/common/unobfuscate.py +0 -0
  394. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/config/__init__.py +0 -0
  395. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/config/ad_block_list.py +0 -0
  396. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/config/proxy_list.py +0 -0
  397. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/config/settings.py +0 -0
  398. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/ReadMe.md +0 -0
  399. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/__init__.py +0 -0
  400. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/logo_helper.py +0 -0
  401. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/rich_helper.py +0 -0
  402. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/run.py +0 -0
  403. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  404. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  405. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_commander.py +0 -0
  406. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_install.py +0 -0
  407. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  408. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  409. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  410. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  411. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  412. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  413. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_print.py +0 -0
  414. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  415. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/__init__.py +0 -0
  416. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/application_manager.py +0 -0
  417. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/capabilities_parser.py +0 -0
  418. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/colored_traceback.py +0 -0
  419. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/create_db_tables.sql +0 -0
  420. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/detect_b_ver.py +0 -0
  421. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/download_helper.py +0 -0
  422. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/encoded_images.py +0 -0
  423. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/jqc_helper.py +0 -0
  424. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/log_helper.py +0 -0
  425. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/mysql.py +0 -0
  426. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/proxy_helper.py +0 -0
  427. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/recorder_helper.py +0 -0
  428. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/report_helper.py +0 -0
  429. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/s3_manager.py +0 -0
  430. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/sb_driver.py +0 -0
  431. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/session_helper.py +0 -0
  432. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/settings_parser.py +0 -0
  433. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/style_sheet.py +0 -0
  434. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/testcase_manager.py +0 -0
  435. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/tour_helper.py +0 -0
  436. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/core/visual_helper.py +0 -0
  437. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/drivers/ReadMe.md +0 -0
  438. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/drivers/__init__.py +0 -0
  439. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/ReadMe.md +0 -0
  440. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/__init__.py +0 -0
  441. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/ad_block.zip +0 -0
  442. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/disable_csp.zip +0 -0
  443. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/recorder.zip +0 -0
  444. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/extensions/sbase_ext.zip +0 -0
  445. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/__init__.py +0 -0
  446. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/base_case.py +2 -2
  447. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/constants.py +0 -0
  448. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  449. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/errors.py +0 -0
  450. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/js_utils.py +0 -0
  451. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/page_actions.py +0 -0
  452. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/page_utils.py +0 -0
  453. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/unittest_helper.py +0 -0
  454. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/words.py +0 -0
  455. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  456. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/js_code/__init__.py +0 -0
  457. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/js_code/active_css_js.py +0 -0
  458. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/js_code/live_js.py +0 -0
  459. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/js_code/recorder_js.py +0 -0
  460. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/masterqa/ReadMe.md +0 -0
  461. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/masterqa/__init__.py +0 -0
  462. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/masterqa/master_qa.py +0 -0
  463. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/__init__.py +0 -0
  464. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/base_plugin.py +0 -0
  465. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/basic_test_info.py +0 -0
  466. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  467. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/page_source.py +0 -0
  468. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/pytest_plugin.py +0 -0
  469. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  470. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/screen_shots.py +0 -0
  471. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/plugins/selenium_plugin.py +0 -0
  472. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/resources/ReadMe.md +0 -0
  473. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/resources/__init__.py +0 -0
  474. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/resources/favicon.ico +0 -0
  475. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/__init__.py +0 -0
  476. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/chinese.py +0 -0
  477. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/dutch.py +0 -0
  478. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/french.py +0 -0
  479. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/italian.py +0 -0
  480. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/japanese.py +0 -0
  481. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/korean.py +0 -0
  482. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/master_dict.py +0 -0
  483. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/portuguese.py +0 -0
  484. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/russian.py +0 -0
  485. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/spanish.py +0 -0
  486. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/translate/translator.py +0 -0
  487. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/__init__.py +0 -0
  488. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/cdp.py +0 -0
  489. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/dprocess.py +0 -0
  490. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/options.py +0 -0
  491. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/patcher.py +0 -0
  492. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/reactor.py +0 -0
  493. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/undetected/webelement.py +0 -0
  494. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/__init__.py +0 -0
  495. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  496. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  497. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  498. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  499. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  500. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  501. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  502. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  503. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  504. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  505. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  506. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  507. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  508. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  509. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  510. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/SOURCES.txt +0 -0
  511. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/dependency_links.txt +0 -0
  512. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/entry_points.txt +0 -0
  513. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/seleniumbase.egg-info/top_level.txt +0 -0
  514. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/setup.cfg +0 -0
  515. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/virtualenv_install.sh +0 -0
  516. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/win_install.bat +0 -0
  517. {seleniumbase-4.28.0a3 → seleniumbase-4.28.1}/win_virtualenv.bat +0 -0
@@ -1,11 +1,34 @@
1
1
  # SeleniumBase Docker Image
2
2
  FROM ubuntu:22.04
3
+ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
4
+
5
+ #======================
6
+ # Locale Configuration
7
+ #======================
8
+ RUN apt-get update
9
+ RUN apt-get install -y --no-install-recommends tzdata locales
10
+ RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
11
+ ENV LANG en_US.UTF-8
12
+ ENV LANGUAGE en_US:en
13
+ ENV LC_ALL en_US.UTF-8
14
+ ENV TZ="America/New_York"
15
+
16
+ #======================
17
+ # Install Common Fonts
18
+ #======================
19
+ RUN apt-get update
20
+ RUN apt-get install -y \
21
+ fonts-liberation \
22
+ fonts-open-sans \
23
+ fonts-mononoki \
24
+ fonts-roboto \
25
+ fonts-lato
3
26
 
4
27
  #============================
5
28
  # Install Linux Dependencies
6
29
  #============================
7
- RUN apt-get update && apt-get install -y \
8
- fonts-liberation \
30
+ RUN apt-get update
31
+ RUN apt-get install -y \
9
32
  libasound2 \
10
33
  libatk-bridge2.0-0 \
11
34
  libatk1.0-0 \
@@ -17,60 +40,57 @@ RUN apt-get update && apt-get install -y \
17
40
  libgtk-3-0 \
18
41
  libnspr4 \
19
42
  libnss3 \
43
+ libu2f-udev \
44
+ libvulkan1 \
20
45
  libwayland-client0 \
21
46
  libxcomposite1 \
22
47
  libxdamage1 \
23
48
  libxfixes3 \
24
49
  libxkbcommon0 \
25
- libxrandr2 \
26
- libu2f-udev \
27
- libvulkan1 \
28
- xdg-utils
50
+ libxrandr2
51
+
52
+ #==========================
53
+ # Install useful utilities
54
+ #==========================
55
+ RUN apt-get update
56
+ RUN apt-get install -y xdg-utils
29
57
 
30
58
  #=================================
31
59
  # Install Bash Command Line Tools
32
60
  #=================================
61
+ RUN apt-get update
33
62
  RUN apt-get -qy --no-install-recommends install \
34
63
  curl \
35
64
  sudo \
36
65
  unzip \
37
66
  vim \
38
67
  wget \
39
- xvfb \
40
- && rm -rf /var/lib/apt/lists/*
68
+ xvfb
41
69
 
42
70
  #================
43
71
  # Install Chrome
44
72
  #================
45
- RUN curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
46
- RUN apt-get install -y ./google-chrome-stable_current_amd64.deb
73
+ RUN apt-get update
74
+ RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
75
+ RUN dpkg -i google-chrome-stable_current_amd64.deb
76
+ RUN apt-get -fy --no-install-recommends install
47
77
  RUN rm google-chrome-stable_current_amd64.deb
48
78
 
49
79
  #================
50
80
  # Install Python
51
81
  #================
52
- RUN apt-get update -y
53
- RUN apt-get install -y python3 python3-pip python3-setuptools python3-dev
82
+ RUN apt-get update
83
+ RUN apt-get install -y python3 python3-pip python3-setuptools python3-dev python3-tk
54
84
  RUN alias python=python3
55
85
  RUN echo "alias python=python3" >> ~/.bashrc
56
86
  RUN apt-get -qy --no-install-recommends install python3.10
57
87
  RUN rm /usr/bin/python3
58
88
  RUN ln -s python3.10 /usr/bin/python3
59
89
 
60
- #=============================================
61
- # Allow Special Characters in Python Programs
62
- #=============================================
63
- RUN export PYTHONIOENCODING=utf8
64
- RUN echo "export PYTHONIOENCODING=utf8" >> ~/.bashrc
65
-
66
- #===========================
67
- # Configure Virtual Display
68
- #===========================
69
- RUN set -e
70
- RUN echo "Starting X virtual framebuffer (Xvfb) in background..."
71
- RUN Xvfb -ac :99 -screen 0 1280x1024x16 > /dev/null 2>&1 &
72
- RUN export DISPLAY=:99
73
- RUN exec "$@"
90
+ #===============
91
+ # Cleanup Lists
92
+ #===============
93
+ RUN rm -rf /var/lib/apt/lists/*
74
94
 
75
95
  #=====================
76
96
  # Set up SeleniumBase
@@ -89,6 +109,7 @@ RUN find . -name '*.pyc' -delete
89
109
  RUN pip install --upgrade pip setuptools wheel
90
110
  RUN cd /SeleniumBase && ls && pip install -r requirements.txt --upgrade
91
111
  RUN cd /SeleniumBase && pip install .
112
+ RUN pip install pyautogui
92
113
 
93
114
  #=======================
94
115
  # Download chromedriver
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.28.0a3
3
+ Version: 4.28.1
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
@@ -59,18 +59,18 @@ Requires-Python: >=3.7
59
59
  Description-Content-Type: text/markdown
60
60
  License-File: LICENSE
61
61
  Requires-Dist: pip>=24.0; python_version < "3.8"
62
- Requires-Dist: pip>=24.1; python_version >= "3.8"
62
+ Requires-Dist: pip>=24.1.1; python_version >= "3.8"
63
63
  Requires-Dist: packaging>=24.0; python_version < "3.8"
64
64
  Requires-Dist: packaging>=24.1; python_version >= "3.8"
65
65
  Requires-Dist: setuptools>=68.0.0; python_version < "3.8"
66
- Requires-Dist: setuptools>=70.1.0; python_version >= "3.8"
66
+ Requires-Dist: setuptools>=70.1.1; python_version >= "3.8"
67
67
  Requires-Dist: wheel>=0.42.0; python_version < "3.8"
68
68
  Requires-Dist: wheel>=0.43.0; python_version >= "3.8"
69
69
  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.3; python_version >= "3.8"
73
+ Requires-Dist: filelock>=3.15.4; 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.3; python_version >= "3.8" and extra == "coverage"
141
+ Requires-Dist: coverage>=7.5.4; 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
@@ -13,8 +13,7 @@ class CDPTests(BaseCase):
13
13
  )
14
14
 
15
15
  def click_turnstile_and_verify(sb):
16
- sb.switch_to_frame("iframe")
17
- sb.driver.uc_click("span")
16
+ sb.uc_gui_handle_cf()
18
17
  sb.assert_element("img#captcha-success", timeout=3)
19
18
  sb.highlight("img#captcha-success", loops=8)
20
19
 
@@ -22,7 +21,7 @@ class CDPTests(BaseCase):
22
21
  if not (self.undetectable and self.uc_cdp_events):
23
22
  self.get_new_driver(undetectable=True, uc_cdp_events=True)
24
23
  url = "seleniumbase.io/apps/turnstile"
25
- self.driver.uc_open_with_reconnect(url, 2)
24
+ self.uc_open_with_reconnect(url, 2)
26
25
  self.add_cdp_listener()
27
26
  self.click_turnstile_and_verify()
28
27
  self.sleep(1)
@@ -1,16 +1,16 @@
1
1
  pip>=24.0;python_version<"3.8"
2
- pip>=24.1;python_version>="3.8"
2
+ pip>=24.1.1;python_version>="3.8"
3
3
  packaging>=24.0;python_version<"3.8"
4
4
  packaging>=24.1;python_version>="3.8"
5
5
  setuptools>=68.0.0;python_version<"3.8"
6
- setuptools>=70.1.0;python_version>="3.8"
6
+ setuptools>=70.1.1;python_version>="3.8"
7
7
  wheel>=0.42.0;python_version<"3.8"
8
8
  wheel>=0.43.0;python_version>="3.8"
9
9
  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.3;python_version>="3.8"
13
+ filelock>=3.15.4;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.3;python_version>="3.8"
80
+ coverage>=7.5.4;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.1"
@@ -566,10 +566,11 @@ def install_pyautogui_if_missing():
566
566
  try:
567
567
  use_pyautogui_ver = constants.PyAutoGUI.VER
568
568
  if pyautogui.__version__ != use_pyautogui_ver:
569
+ del pyautogui
569
570
  shared_utils.pip_install(
570
571
  "pyautogui", version=use_pyautogui_ver
571
572
  )
572
- del pyautogui
573
+ import pyautogui
573
574
  except Exception:
574
575
  pass
575
576
  except Exception:
@@ -1030,7 +1031,7 @@ def _set_chrome_options(
1030
1031
  prefs["download.prompt_for_download"] = False
1031
1032
  prefs["credentials_enable_service"] = False
1032
1033
  prefs["local_discovery.notifications_enabled"] = False
1033
- prefs["safebrowsing.enabled"] = True
1034
+ prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
1034
1035
  prefs["safebrowsing.disable_download_protection"] = True
1035
1036
  prefs["omnibox-max-zero-suggest-matches"] = 0
1036
1037
  prefs["omnibox-use-existing-autocomplete-client"] = 0
@@ -1633,6 +1634,10 @@ def get_driver(
1633
1634
  if headless2 and browser_name == constants.Browser.FIREFOX:
1634
1635
  headless2 = False # Only for Chromium
1635
1636
  headless = True
1637
+ if not hasattr(sb_config, "headless"):
1638
+ sb_config.headless = headless
1639
+ if not hasattr(sb_config, "headless2"):
1640
+ sb_config.headless2 = headless2
1636
1641
  if (
1637
1642
  binary_location
1638
1643
  and isinstance(binary_location, str)
@@ -2621,7 +2626,7 @@ def get_local_driver(
2621
2626
  "credentials_enable_service": False,
2622
2627
  "local_discovery.notifications_enabled": False,
2623
2628
  "safebrowsing.disable_download_protection": True,
2624
- "safebrowsing.enabled": True,
2629
+ "safebrowsing.enabled": False, # Prevent PW "data breach" pop-ups
2625
2630
  "omnibox-max-zero-suggest-matches": 0,
2626
2631
  "omnibox-use-existing-autocomplete-client": 0,
2627
2632
  "omnibox-trending-zero-prefix-suggestions-on-ntp": 0,
@@ -81,46 +81,46 @@ def format_exc(exception, message):
81
81
  from seleniumbase.common.exceptions import TextNotVisibleException
82
82
  from seleniumbase.common import exceptions
83
83
 
84
- if exception == Exception:
84
+ if exception is Exception:
85
85
  exc = Exception
86
86
  return exc, message
87
- elif exception == ElementNotVisibleException:
87
+ elif exception is ElementNotVisibleException:
88
88
  exc = exceptions.ElementNotVisibleException
89
89
  elif exception == "ElementNotVisibleException":
90
90
  exc = exceptions.ElementNotVisibleException
91
- elif exception == LinkTextNotFoundException:
91
+ elif exception is LinkTextNotFoundException:
92
92
  exc = exceptions.LinkTextNotFoundException
93
93
  elif exception == "LinkTextNotFoundException":
94
94
  exc = exceptions.LinkTextNotFoundException
95
- elif exception == NoSuchElementException:
95
+ elif exception is NoSuchElementException:
96
96
  exc = exceptions.NoSuchElementException
97
97
  elif exception == "NoSuchElementException":
98
98
  exc = exceptions.NoSuchElementException
99
- elif exception == TextNotVisibleException:
99
+ elif exception is TextNotVisibleException:
100
100
  exc = exceptions.TextNotVisibleException
101
101
  elif exception == "TextNotVisibleException":
102
102
  exc = exceptions.TextNotVisibleException
103
- elif exception == NoAlertPresentException:
103
+ elif exception is NoAlertPresentException:
104
104
  exc = exceptions.NoAlertPresentException
105
105
  elif exception == "NoAlertPresentException":
106
106
  exc = exceptions.NoAlertPresentException
107
- elif exception == NoSuchAttributeException:
107
+ elif exception is NoSuchAttributeException:
108
108
  exc = exceptions.NoSuchAttributeException
109
109
  elif exception == "NoSuchAttributeException":
110
110
  exc = exceptions.NoSuchAttributeException
111
- elif exception == NoSuchFrameException:
111
+ elif exception is NoSuchFrameException:
112
112
  exc = exceptions.NoSuchFrameException
113
113
  elif exception == "NoSuchFrameException":
114
114
  exc = exceptions.NoSuchFrameException
115
- elif exception == NoSuchWindowException:
115
+ elif exception is NoSuchWindowException:
116
116
  exc = exceptions.NoSuchWindowException
117
117
  elif exception == "NoSuchWindowException":
118
118
  exc = exceptions.NoSuchWindowException
119
- elif exception == NoSuchFileException:
119
+ elif exception is NoSuchFileException:
120
120
  exc = exceptions.NoSuchFileException
121
121
  elif exception == "NoSuchFileException":
122
122
  exc = exceptions.NoSuchFileException
123
- elif exception == NoSuchOptionException:
123
+ elif exception is NoSuchOptionException:
124
124
  exc = exceptions.NoSuchOptionException
125
125
  elif exception == "NoSuchOptionException":
126
126
  exc = exceptions.NoSuchOptionException
@@ -125,7 +125,9 @@ def Driver(
125
125
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
126
126
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
127
127
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
128
+ ad_block=None, # Shortcut / Duplicate of "ad_block_on".
128
129
  server=None, # Shortcut / Duplicate of "servername".
130
+ guest=None, # Shortcut / Duplicate of "guest_mode".
129
131
  wire=None, # Shortcut / Duplicate of "use_wire".
130
132
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
131
133
  ):
@@ -263,6 +265,8 @@ def Driver(
263
265
  incognito = True
264
266
  else:
265
267
  incognito = False
268
+ if guest is not None and guest_mode is None:
269
+ guest_mode = guest
266
270
  if guest_mode is None:
267
271
  if "--guest" in sys_argv:
268
272
  guest_mode = True
@@ -387,6 +391,14 @@ def Driver(
387
391
  uc_cdp_events = True
388
392
  else:
389
393
  uc_cdp_events = False
394
+ if undetectable and browser != "chrome":
395
+ message = (
396
+ '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
397
+ '\n ("uc=True" / "undetectable=True" / "--uc")'
398
+ '\n (Your browser choice was: "%s".)'
399
+ '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
400
+ )
401
+ print(message)
390
402
  if headed is None:
391
403
  # Override the default headless mode on Linux if set.
392
404
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -507,6 +519,8 @@ def Driver(
507
519
  swiftshader = True
508
520
  else:
509
521
  swiftshader = False
522
+ if ad_block is not None and ad_block_on is None:
523
+ ad_block_on = ad_block
510
524
  if ad_block_on is None:
511
525
  if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
512
526
  ad_block_on = True
@@ -103,7 +103,9 @@ def SB(
103
103
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
104
104
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
105
105
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
106
+ ad_block=None, # Shortcut / Duplicate of "ad_block_on".
106
107
  server=None, # Shortcut / Duplicate of "servername".
108
+ guest=None, # Shortcut / Duplicate of "guest_mode".
107
109
  wire=None, # Shortcut / Duplicate of "use_wire".
108
110
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
109
111
  sjw=None, # Shortcut / Duplicate of "skip_js_waits".
@@ -296,6 +298,8 @@ def SB(
296
298
  incognito = True
297
299
  else:
298
300
  incognito = False
301
+ if guest is not None and guest_mode is None:
302
+ guest_mode = guest
299
303
  if guest_mode is None:
300
304
  if "--guest" in sys_argv:
301
305
  guest_mode = True
@@ -444,6 +448,14 @@ def SB(
444
448
  uc_cdp_events = True
445
449
  else:
446
450
  uc_cdp_events = False
451
+ if undetectable and browser != "chrome":
452
+ message = (
453
+ '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
454
+ '\n ("uc=True" / "undetectable=True" / "--uc")'
455
+ '\n (Your browser choice was: "%s".)'
456
+ '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
457
+ )
458
+ print(message)
447
459
  if headed is None:
448
460
  # Override the default headless mode on Linux if set.
449
461
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -651,6 +663,8 @@ def SB(
651
663
  swiftshader = True
652
664
  else:
653
665
  swiftshader = False
666
+ if ad_block is not None and ad_block_on is None:
667
+ ad_block_on = ad_block
654
668
  if ad_block_on is None:
655
669
  if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
656
670
  ad_block_on = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.28.0a3
3
+ Version: 4.28.1
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
@@ -59,18 +59,18 @@ Requires-Python: >=3.7
59
59
  Description-Content-Type: text/markdown
60
60
  License-File: LICENSE
61
61
  Requires-Dist: pip>=24.0; python_version < "3.8"
62
- Requires-Dist: pip>=24.1; python_version >= "3.8"
62
+ Requires-Dist: pip>=24.1.1; python_version >= "3.8"
63
63
  Requires-Dist: packaging>=24.0; python_version < "3.8"
64
64
  Requires-Dist: packaging>=24.1; python_version >= "3.8"
65
65
  Requires-Dist: setuptools>=68.0.0; python_version < "3.8"
66
- Requires-Dist: setuptools>=70.1.0; python_version >= "3.8"
66
+ Requires-Dist: setuptools>=70.1.1; python_version >= "3.8"
67
67
  Requires-Dist: wheel>=0.42.0; python_version < "3.8"
68
68
  Requires-Dist: wheel>=0.43.0; python_version >= "3.8"
69
69
  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.3; python_version >= "3.8"
73
+ Requires-Dist: filelock>=3.15.4; 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.3; python_version >= "3.8" and extra == "coverage"
141
+ Requires-Dist: coverage>=7.5.4; 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
@@ -65,11 +65,11 @@ markdown-it-py==2.2.0
65
65
  urllib3<2.3.0,>=1.26.18
66
66
 
67
67
  [:python_version >= "3.8"]
68
- pip>=24.1
68
+ pip>=24.1.1
69
69
  packaging>=24.1
70
- setuptools>=70.1.0
70
+ setuptools>=70.1.1
71
71
  wheel>=0.43.0
72
- filelock>=3.15.3
72
+ filelock>=3.15.4
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.3
100
+ coverage>=7.5.4
101
101
  pytest-cov>=5.0.0
102
102
 
103
103
  [flake8]
@@ -147,18 +147,18 @@ setup(
147
147
  python_requires=">=3.7",
148
148
  install_requires=[
149
149
  'pip>=24.0;python_version<"3.8"',
150
- 'pip>=24.1;python_version>="3.8"',
150
+ 'pip>=24.1.1;python_version>="3.8"',
151
151
  'packaging>=24.0;python_version<"3.8"',
152
152
  'packaging>=24.1;python_version>="3.8"',
153
153
  'setuptools>=68.0.0;python_version<"3.8"',
154
- 'setuptools>=70.1.0;python_version>="3.8"',
154
+ 'setuptools>=70.1.1;python_version>="3.8"',
155
155
  'wheel>=0.42.0;python_version<"3.8"',
156
156
  'wheel>=0.43.0;python_version>="3.8"',
157
157
  'attrs>=23.2.0',
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.3;python_version>="3.8"',
161
+ 'filelock>=3.15.4;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.3;python_version>="3.8"',
237
+ 'coverage>=7.5.4;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.0a3"
File without changes
File without changes
File without changes