seleniumbase 4.22.5__tar.gz → 4.23.0__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 (520) hide show
  1. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/workflows/python-package.yml +2 -3
  2. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/PKG-INFO +19 -16
  3. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/README.md +10 -7
  4. seleniumbase-4.23.0/examples/boilerplates/boilerplate_test.py +14 -0
  5. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/github_test.py +1 -1
  6. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_parameter_script.py +1 -0
  7. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_docs_site.py +5 -5
  8. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_download_images.py +3 -1
  9. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_hack_search.py +2 -2
  10. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_todomvc.py +3 -3
  11. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/russian_test_1.py +1 -1
  12. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/customizing_test_runs.md +1 -0
  13. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/requirements.txt +6 -6
  14. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/requirements.txt +6 -6
  15. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/__version__.py +1 -1
  16. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/behave/behave_sb.py +8 -0
  17. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/run.py +2 -1
  18. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/browser_launcher.py +75 -21
  19. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/base_case.py +7 -0
  20. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/driver_manager.py +26 -0
  21. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/pytest_plugin.py +15 -0
  22. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/sb_manager.py +27 -0
  23. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/selenium_plugin.py +12 -0
  24. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/PKG-INFO +19 -16
  25. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/requires.txt +8 -8
  26. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/setup.py +9 -9
  27. seleniumbase-4.22.5/examples/boilerplates/boilerplate_test.py +0 -9
  28. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/Workflows.md +0 -0
  29. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/workflows/pages.yml +0 -0
  30. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/workflows/python-nightly-mac.yml +0 -0
  31. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  32. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.github/workflows/python-nightly-windows.yml +0 -0
  33. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/.gitignore +0 -0
  34. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/CHANGELOG.md +0 -0
  35. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/CNAME +0 -0
  36. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/CODE_OF_CONDUCT.md +0 -0
  37. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/CONTRIBUTING.md +0 -0
  38. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/Dockerfile +0 -0
  39. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/LICENSE +0 -0
  40. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/MANIFEST.in +0 -0
  41. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/SECURITY.md +0 -0
  42. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/_config.yml +0 -0
  43. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/azure-pipelines.yml +0 -0
  44. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/ReadMe.md +0 -0
  45. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/__init__.py +0 -0
  46. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/basic_test.py +0 -0
  47. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/ReadMe.md +0 -0
  48. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/__init__.py +0 -0
  49. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/behave.ini +0 -0
  50. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/__init__.py +0 -0
  51. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/behave.ini +0 -0
  52. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/calculator.feature +0 -0
  53. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/environment.py +0 -0
  54. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/fail_page.feature +0 -0
  55. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/realworld.feature +0 -0
  56. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/steps/__init__.py +0 -0
  57. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/steps/calculator.py +0 -0
  58. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  59. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/steps/imported.py +0 -0
  60. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  61. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/behave_bdd/features/swag_labs.feature +0 -0
  62. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/ReadMe.md +0 -0
  63. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/__init__.py +0 -0
  64. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/base_test_case.py +0 -0
  65. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/classic_obj_test.py +0 -0
  66. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/page_objects.py +0 -0
  67. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/__init__.py +0 -0
  68. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  69. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  70. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  71. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  72. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/google_objects.py +0 -0
  73. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/google_test.py +0 -0
  74. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  75. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  76. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/samples/test_page_objects.py +0 -0
  77. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/boilerplates/sb_fixture_test.py +0 -0
  78. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/ReadMe.md +0 -0
  79. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/mac_cap_file.py +0 -0
  80. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/sample_cap_file_BS.py +0 -0
  81. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/sample_cap_file_SL.py +0 -0
  82. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/selenoid_cap_file.py +0 -0
  83. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/capabilities/win10_cap_file.py +0 -0
  84. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  85. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  86. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  87. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  88. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  89. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  90. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  91. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  92. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/case_summary.md +0 -0
  93. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/ReadMe.md +0 -0
  94. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/chart_presentation.py +0 -0
  95. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/my_chart.py +0 -0
  96. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/pie_charts.py +0 -0
  97. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/test_area_chart.py +0 -0
  98. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/test_display_chart.py +0 -0
  99. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/test_line_chart.py +0 -0
  100. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/test_multi_series.py +0 -0
  101. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/chart_maker/test_save_chart.py +0 -0
  102. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/coffee_cart_tests.py +0 -0
  103. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/custom_settings.py +0 -0
  104. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/desktop_apps/ReadMe.md +0 -0
  105. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/desktop_apps/recorder.py +0 -0
  106. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/dialog_boxes/ReadMe.md +0 -0
  107. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  108. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/edge_test.py +0 -0
  109. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/example_config.cfg +0 -0
  110. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/example_logs/ReadMe.md +0 -0
  111. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/example_logs/basic_test_info.txt +0 -0
  112. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/example_logs/page_source.html +0 -0
  113. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/example_logs/screenshot.png +0 -0
  114. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/gui_test_runner.py +0 -0
  115. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/hack_the_planet.py +0 -0
  116. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/handle_alert_test.py +0 -0
  117. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/iframe_tests.py +0 -0
  118. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/locale_code_test.py +0 -0
  119. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/master_qa/ReadMe.md +0 -0
  120. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/master_qa/__init__.py +0 -0
  121. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  122. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/master_qa/masterqa_test_1.py +0 -0
  123. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/master_qa/pytest.ini +0 -0
  124. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/__init__.py +0 -0
  125. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/ReadMe.md +0 -0
  126. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/__init__.py +0 -0
  127. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/example_spec.js +0 -0
  128. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/example_test.py +0 -0
  129. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/input_spec.js +0 -0
  130. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/input_test.py +0 -0
  131. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  132. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/protractor/mat_paginator_test.py +0 -0
  133. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/ReadMe.md +0 -0
  134. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/__init__.py +0 -0
  135. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  136. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  137. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/messy_raw.py +0 -0
  138. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/pytest.ini +0 -0
  139. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/refined_raw.py +0 -0
  140. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  141. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/my_first_test.py +0 -0
  142. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/nth_child_test.py +0 -0
  143. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/__init__.py +0 -0
  144. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/demo_page.html +0 -0
  145. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/load_html_test.py +0 -0
  146. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/test_demo_page.py +0 -0
  147. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/test_handle_alerts.py +0 -0
  148. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/test_request_fixture.py +0 -0
  149. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/offline_examples/test_user_agent.py +0 -0
  150. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/old_wordle_script.py +0 -0
  151. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/parameterized_test.py +0 -0
  152. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/performance_test.py +0 -0
  153. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/ReadMe.md +0 -0
  154. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/core_presentation.py +0 -0
  155. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/edge_presentation.py +0 -0
  156. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/fundamentals.py +0 -0
  157. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/my_presentation.py +0 -0
  158. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/presenter/py_virtual_envs.py +0 -0
  159. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/proxy_test.py +0 -0
  160. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/pytest.ini +0 -0
  161. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/rate_limiting_test.py +0 -0
  162. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_browser_launcher.py +0 -0
  163. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_call.py +0 -0
  164. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_driver_context.py +0 -0
  165. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_file_call.py +0 -0
  166. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_main_call.py +0 -0
  167. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_sb.py +0 -0
  168. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_test_scripts.py +0 -0
  169. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/raw_uc_mode.py +0 -0
  170. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/setup.cfg +0 -0
  171. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/shadow_root_test.py +0 -0
  172. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/swag_labs_user_tests.py +0 -0
  173. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_apple_site.py +0 -0
  174. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_assert_elements.py +0 -0
  175. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_calculator.py +0 -0
  176. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_canvas.py +0 -0
  177. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_checkboxes.py +0 -0
  178. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_chinese_pdf.py +0 -0
  179. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_chromedriver.py +0 -0
  180. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_coffee_cart.py +0 -0
  181. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_console_logging.py +0 -0
  182. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_contains_selector.py +0 -0
  183. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_cycle_elements.py +0 -0
  184. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_decryption.py +0 -0
  185. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_deferred_asserts.py +0 -0
  186. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_demo_site.py +0 -0
  187. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_detect_404s.py +0 -0
  188. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_double_click.py +0 -0
  189. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_download_files.py +0 -0
  190. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_drag_and_drop.py +0 -0
  191. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_error_page.py +0 -0
  192. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_event_firing.py +0 -0
  193. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_fail.py +0 -0
  194. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_geolocation.py +0 -0
  195. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_get_coffee.py +0 -0
  196. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_get_locale_code.py +0 -0
  197. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_get_pdf_text.py +0 -0
  198. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_get_user_agent.py +0 -0
  199. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_image_saving.py +0 -0
  200. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_inspect_html.py +0 -0
  201. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_login.py +0 -0
  202. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_markers.py +0 -0
  203. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_mfa_login.py +0 -0
  204. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_multiple_drivers.py +0 -0
  205. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_null.py +0 -0
  206. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_override_driver.py +0 -0
  207. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_override_sb_fixture.py +0 -0
  208. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_parse_soup.py +0 -0
  209. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_pdf_asserts.py +0 -0
  210. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_pytest_parametrize.py +0 -0
  211. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_repeat_tests.py +0 -0
  212. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_request_sb_fixture.py +0 -0
  213. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_save_screenshots.py +0 -0
  214. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_sb_fixture.py +0 -0
  215. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_scrape_bing.py +0 -0
  216. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_select_options.py +0 -0
  217. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_shadow_dom.py +0 -0
  218. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_show_file_choosers.py +0 -0
  219. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_skype_site.py +0 -0
  220. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_suite.py +0 -0
  221. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_swag_labs.py +0 -0
  222. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_tinymce.py +0 -0
  223. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_url_asserts.py +0 -0
  224. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_usefixtures.py +0 -0
  225. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_verify_chromedriver.py +0 -0
  226. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_window_switching.py +0 -0
  227. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_xfail.py +0 -0
  228. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/test_xkcd.py +0 -0
  229. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/time_limit_test.py +0 -0
  230. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/ReadMe.md +0 -0
  231. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  232. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  233. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  234. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/google_tour.py +0 -0
  235. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  236. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/introjs_google_tour.py +0 -0
  237. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/maps_introjs_tour.py +0 -0
  238. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/octocat_tour.py +0 -0
  239. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/shepherd_google_tour.py +0 -0
  240. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/tour_examples/xkcd_tour.py +0 -0
  241. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/ReadMe.md +0 -0
  242. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/chinese_test_1.py +0 -0
  243. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/dutch_test_1.py +0 -0
  244. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/english_test_1.py +0 -0
  245. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/french_test_1.py +0 -0
  246. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/italian_test_1.py +0 -0
  247. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/japanese_test_1.py +0 -0
  248. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/korean_test_1.py +0 -0
  249. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/portuguese_test_1.py +0 -0
  250. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/pytest.ini +0 -0
  251. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/translations/spanish_test_1.py +0 -0
  252. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/uc_cdp_events.py +0 -0
  253. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/unit_tests/ReadMe.md +0 -0
  254. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/unit_tests/verify_framework.py +0 -0
  255. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/upgrade_chromedriver.py +0 -0
  256. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/upload_file_test.py +0 -0
  257. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/user_agent_test.py +0 -0
  258. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/verify_undetected.py +0 -0
  259. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/ReadMe.md +0 -0
  260. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/__init__.py +0 -0
  261. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  262. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  263. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  264. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  265. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  266. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  267. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/layout_test.py +0 -0
  268. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/python_home_test.py +0 -0
  269. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/test_layout_fail.py +0 -0
  270. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/visual_testing/xkcd_visual_test.py +0 -0
  271. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/wordle_test.py +0 -0
  272. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/xpath_test.py +0 -0
  273. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/examples/youtube_search_test.py +0 -0
  274. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/ReadMe.md +0 -0
  275. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/behave_gui.md +0 -0
  276. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/case_plans.md +0 -0
  277. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/chinese.md +0 -0
  278. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/commander.md +0 -0
  279. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/demo_mode.md +0 -0
  280. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/desired_capabilities.md +0 -0
  281. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/features_list.md +0 -0
  282. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/handling_iframes.md +0 -0
  283. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/happy_customers.md +0 -0
  284. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/hidden_files_info.md +0 -0
  285. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/how_it_works.md +0 -0
  286. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/html_inspector.md +0 -0
  287. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/install.md +0 -0
  288. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/install_python_pip_git.md +0 -0
  289. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/js_package_manager.md +0 -0
  290. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/locale_codes.md +0 -0
  291. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/method_summary.md +0 -0
  292. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/mobile_testing.md +0 -0
  293. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/mysql_installation.md +0 -0
  294. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/recorder_mode.md +0 -0
  295. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/shadow_dom.md +0 -0
  296. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/syntax_formats.md +0 -0
  297. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/thank_you.md +0 -0
  298. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/translations.md +0 -0
  299. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/useful_grep_commands.md +0 -0
  300. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/using_safari_driver.md +0 -0
  301. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/verify_webdriver.md +0 -0
  302. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/virtualenv_instructions.md +0 -0
  303. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/help_docs/webdriver_installation.md +0 -0
  304. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/install.sh +0 -0
  305. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/__init__.py +0 -0
  306. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  307. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/azure/jenkins/ReadMe.md +0 -0
  308. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/ReadMe.md +0 -0
  309. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/behave.ini +0 -0
  310. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/__init__.py +0 -0
  311. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/behave.ini +0 -0
  312. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/calculator.feature +0 -0
  313. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/environment.py +0 -0
  314. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/fail_page.feature +0 -0
  315. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/realworld.feature +0 -0
  316. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/steps/__init__.py +0 -0
  317. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/steps/calculator.py +0 -0
  318. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/steps/fail_page.py +0 -0
  319. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/steps/real_world.py +0 -0
  320. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/steps/swag_labs.py +0 -0
  321. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/behave/features/swag_labs.feature +0 -0
  322. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/brython/ReadMe.md +0 -0
  323. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/brython/index.html +0 -0
  324. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/brython/index.py +0 -0
  325. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/brython/library.html +0 -0
  326. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/docker/ReadMe.md +0 -0
  327. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/docker/docker-entrypoint.sh +0 -0
  328. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/docker/docker_config.cfg +0 -0
  329. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  330. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/docker/run_docker_test_in_firefox.sh +0 -0
  331. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/github/ReadMe.md +0 -0
  332. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/github/workflows/ReadMe.md +0 -0
  333. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/github/workflows/extras.md +0 -0
  334. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/google_cloud/ReadMe.md +0 -0
  335. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/katalon/ReadMe.md +0 -0
  336. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/linux/Linuxfile.sh +0 -0
  337. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/linux/ReadMe.md +0 -0
  338. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/linux/Xvfb_launcher.sh +0 -0
  339. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/linux/jenkins_permissions.sh +0 -0
  340. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/linux/tomcat_permissions.sh +0 -0
  341. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/ReadMe.md +0 -0
  342. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/__init__.py +0 -0
  343. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/index.html +0 -0
  344. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/my_first_test.py +0 -0
  345. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/npm-shrinkwrap.json +0 -0
  346. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/package.json +0 -0
  347. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/server.js +0 -0
  348. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/node_js/test_demo_site.py +0 -0
  349. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/selenium_grid/ReadMe.md +0 -0
  350. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/integrations/selenium_ide/ReadMe.md +0 -0
  351. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs.yml +0 -0
  352. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/ReadMe.txt +0 -0
  353. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/docs_instructions.txt +0 -0
  354. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/dash_pie.png +0 -0
  355. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/dash_pie_2.png +0 -0
  356. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/dash_pie_3.png +0 -0
  357. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/favicon.ico +0 -0
  358. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/grad_logo.png +0 -0
  359. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/green_icon.png +0 -0
  360. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/green_logo.png +0 -0
  361. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/green_logo2.png +0 -0
  362. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/green_logo3.png +0 -0
  363. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo3.png +0 -0
  364. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo3a.png +0 -0
  365. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo3b.png +0 -0
  366. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo3c.png +0 -0
  367. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo4.png +0 -0
  368. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo5.png +0 -0
  369. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo6.png +0 -0
  370. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/logo7.png +0 -0
  371. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/sb_icon.png +0 -0
  372. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/sb_logo_10.png +0 -0
  373. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/sb_logo_7.png +0 -0
  374. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/side_by_side.png +0 -0
  375. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/social/share_facebook.svg +0 -0
  376. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/social/share_github.svg +0 -0
  377. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/social/share_gitter.svg +0 -0
  378. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/social/share_instagram.svg +0 -0
  379. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/img/social/share_twitter.svg +0 -0
  380. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/index.txt +0 -0
  381. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/mkdocs_build/prepare.py +0 -0
  382. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/pytest.ini +0 -0
  383. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/sbase/ReadMe.txt +0 -0
  384. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/sbase/__init__.py +0 -0
  385. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/sbase/__main__.py +0 -0
  386. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/sbase/steps.py +0 -0
  387. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/ReadMe.md +0 -0
  388. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/__init__.py +0 -0
  389. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/__main__.py +0 -0
  390. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/behave/__init__.py +0 -0
  391. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/behave/behave_helper.py +0 -0
  392. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/behave/steps.py +0 -0
  393. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/ReadMe.md +0 -0
  394. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/__init__.py +0 -0
  395. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/decorators.py +0 -0
  396. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/encryption.py +0 -0
  397. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/exceptions.py +0 -0
  398. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/obfuscate.py +0 -0
  399. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/common/unobfuscate.py +0 -0
  400. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/config/__init__.py +0 -0
  401. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/config/ad_block_list.py +0 -0
  402. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/config/proxy_list.py +0 -0
  403. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/config/settings.py +0 -0
  404. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/ReadMe.md +0 -0
  405. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/__init__.py +0 -0
  406. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
  407. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
  408. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  409. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  410. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
  411. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_install.py +0 -0
  412. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  413. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  414. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  415. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  416. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  417. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  418. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_print.py +0 -0
  419. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  420. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/__init__.py +0 -0
  421. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/application_manager.py +0 -0
  422. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/capabilities_parser.py +0 -0
  423. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/colored_traceback.py +0 -0
  424. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/create_db_tables.sql +0 -0
  425. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/detect_b_ver.py +0 -0
  426. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/download_helper.py +0 -0
  427. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/encoded_images.py +0 -0
  428. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/jqc_helper.py +0 -0
  429. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/log_helper.py +0 -0
  430. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/mysql.py +0 -0
  431. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/proxy_helper.py +0 -0
  432. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/recorder_helper.py +0 -0
  433. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/report_helper.py +0 -0
  434. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/s3_manager.py +0 -0
  435. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/sb_driver.py +0 -0
  436. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/session_helper.py +0 -0
  437. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/settings_parser.py +0 -0
  438. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/style_sheet.py +0 -0
  439. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/testcase_manager.py +0 -0
  440. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/tour_helper.py +0 -0
  441. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/core/visual_helper.py +0 -0
  442. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/drivers/ReadMe.md +0 -0
  443. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/drivers/__init__.py +0 -0
  444. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/ReadMe.md +0 -0
  445. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/__init__.py +0 -0
  446. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/ad_block.zip +0 -0
  447. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/disable_csp.zip +0 -0
  448. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/recorder.zip +0 -0
  449. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
  450. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/__init__.py +0 -0
  451. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/constants.py +0 -0
  452. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  453. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/errors.py +0 -0
  454. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/js_utils.py +0 -0
  455. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/page_actions.py +0 -0
  456. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/page_utils.py +0 -0
  457. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/shared_utils.py +0 -0
  458. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
  459. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/words.py +0 -0
  460. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  461. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/js_code/__init__.py +0 -0
  462. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/js_code/active_css_js.py +0 -0
  463. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/js_code/live_js.py +0 -0
  464. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/js_code/recorder_js.py +0 -0
  465. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/masterqa/ReadMe.md +0 -0
  466. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/masterqa/__init__.py +0 -0
  467. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/masterqa/master_qa.py +0 -0
  468. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/__init__.py +0 -0
  469. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/base_plugin.py +0 -0
  470. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/basic_test_info.py +0 -0
  471. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  472. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/page_source.py +0 -0
  473. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  474. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/plugins/screen_shots.py +0 -0
  475. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/resources/ReadMe.md +0 -0
  476. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/resources/__init__.py +0 -0
  477. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/resources/favicon.ico +0 -0
  478. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/__init__.py +0 -0
  479. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/chinese.py +0 -0
  480. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/dutch.py +0 -0
  481. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/french.py +0 -0
  482. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/italian.py +0 -0
  483. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/japanese.py +0 -0
  484. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/korean.py +0 -0
  485. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/master_dict.py +0 -0
  486. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/portuguese.py +0 -0
  487. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/russian.py +0 -0
  488. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/spanish.py +0 -0
  489. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/translate/translator.py +0 -0
  490. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/__init__.py +0 -0
  491. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/cdp.py +0 -0
  492. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/dprocess.py +0 -0
  493. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/options.py +0 -0
  494. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/patcher.py +0 -0
  495. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/reactor.py +0 -0
  496. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/undetected/webelement.py +0 -0
  497. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/__init__.py +0 -0
  498. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  499. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  500. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  501. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  502. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  503. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  504. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  505. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  506. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  507. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  508. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  509. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  510. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  511. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  512. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  513. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
  514. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
  515. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/entry_points.txt +0 -0
  516. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/seleniumbase.egg-info/top_level.txt +0 -0
  517. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/setup.cfg +0 -0
  518. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/virtualenv_install.sh +0 -0
  519. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/win_install.bat +0 -0
  520. {seleniumbase-4.22.5 → seleniumbase-4.23.0}/win_virtualenv.bat +0 -0
@@ -24,13 +24,12 @@ jobs:
24
24
  steps:
25
25
  - uses: actions/checkout@v4
26
26
  - name: Set up Python ${{ matrix.python-version }}
27
- uses: actions/setup-python@v4
27
+ uses: actions/setup-python@v5
28
28
  with:
29
29
  python-version: ${{ matrix.python-version }}
30
30
  - name: Install dependencies
31
31
  run: |
32
- python -m pip install --upgrade pip
33
- python -m pip install --upgrade wheel
32
+ python -m pip install --upgrade pip wheel setuptools
34
33
  pip install -r requirements.txt
35
34
  - name: Install SeleniumBase
36
35
  run: |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.22.5
3
+ Version: 4.23.0
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
@@ -81,18 +81,18 @@ Requires-Dist: sniffio==1.3.0
81
81
  Requires-Dist: h11==0.14.0
82
82
  Requires-Dist: outcome==1.3.0.post0
83
83
  Requires-Dist: trio==0.22.2; python_version < "3.8"
84
- Requires-Dist: trio==0.23.2; python_version >= "3.8"
84
+ Requires-Dist: trio==0.24.0; python_version >= "3.8"
85
85
  Requires-Dist: trio-websocket==0.11.1
86
86
  Requires-Dist: wsproto==1.2.0
87
87
  Requires-Dist: selenium==4.11.2; python_version < "3.8"
88
- Requires-Dist: selenium==4.16.0; python_version >= "3.8"
88
+ Requires-Dist: selenium==4.17.2; python_version >= "3.8"
89
89
  Requires-Dist: cssselect==1.2.0
90
90
  Requires-Dist: sortedcontainers==2.4.0
91
91
  Requires-Dist: fasteners==0.19
92
92
  Requires-Dist: execnet==2.0.2
93
93
  Requires-Dist: iniconfig==2.0.0
94
94
  Requires-Dist: pluggy==1.2.0; python_version < "3.8"
95
- Requires-Dist: pluggy==1.3.0; python_version >= "3.8"
95
+ Requires-Dist: pluggy==1.4.0; python_version >= "3.8"
96
96
  Requires-Dist: py==1.11.0
97
97
  Requires-Dist: pytest==7.4.4
98
98
  Requires-Dist: pytest-html==2.0.1
@@ -105,7 +105,7 @@ Requires-Dist: sbvirtualdisplay==1.3.0
105
105
  Requires-Dist: behave==1.2.6
106
106
  Requires-Dist: soupsieve==2.4.1; python_version < "3.8"
107
107
  Requires-Dist: soupsieve==2.5; python_version >= "3.8"
108
- Requires-Dist: beautifulsoup4==4.12.2
108
+ Requires-Dist: beautifulsoup4==4.12.3
109
109
  Requires-Dist: pygments==2.17.2
110
110
  Requires-Dist: pyreadline3==3.4.1; platform_system == "Windows"
111
111
  Requires-Dist: tabcompleter==1.3.0
@@ -127,10 +127,10 @@ Requires-Dist: coverage==7.4.0; python_version >= "3.8" and extra == "coverage"
127
127
  Requires-Dist: pytest-cov==4.1.0; extra == "coverage"
128
128
  Provides-Extra: flake8
129
129
  Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
130
- Requires-Dist: flake8==6.1.0; python_version >= "3.9" and extra == "flake8"
130
+ Requires-Dist: flake8==7.0.0; python_version >= "3.9" and extra == "flake8"
131
131
  Requires-Dist: mccabe==0.7.0; extra == "flake8"
132
132
  Requires-Dist: pyflakes==2.5.0; python_version < "3.9" and extra == "flake8"
133
- Requires-Dist: pyflakes==3.1.0; python_version >= "3.9" and extra == "flake8"
133
+ Requires-Dist: pyflakes==3.2.0; python_version >= "3.9" and extra == "flake8"
134
134
  Requires-Dist: pycodestyle==2.9.1; python_version < "3.9" and extra == "flake8"
135
135
  Requires-Dist: pycodestyle==2.11.1; python_version >= "3.9" and extra == "flake8"
136
136
  Provides-Extra: ipdb
@@ -140,7 +140,7 @@ Provides-Extra: pdfminer
140
140
  Requires-Dist: pdfminer.six==20221105; python_version < "3.8" and extra == "pdfminer"
141
141
  Requires-Dist: pdfminer.six==20231228; python_version >= "3.8" and extra == "pdfminer"
142
142
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
143
- Requires-Dist: cryptography==41.0.7; python_version >= "3.9" and extra == "pdfminer"
143
+ Requires-Dist: cryptography==42.0.0; python_version >= "3.9" and extra == "pdfminer"
144
144
  Requires-Dist: cffi==1.15.1; python_version < "3.8" and extra == "pdfminer"
145
145
  Requires-Dist: cffi==1.16.0; python_version >= "3.8" and extra == "pdfminer"
146
146
  Requires-Dist: pycparser==2.21; extra == "pdfminer"
@@ -148,7 +148,7 @@ Provides-Extra: pillow
148
148
  Requires-Dist: Pillow==9.5.0; python_version < "3.8" and extra == "pillow"
149
149
  Requires-Dist: Pillow==10.2.0; python_version >= "3.8" and extra == "pillow"
150
150
  Provides-Extra: psutil
151
- Requires-Dist: psutil==5.9.6; extra == "psutil"
151
+ Requires-Dist: psutil==5.9.8; extra == "psutil"
152
152
  Provides-Extra: selenium-stealth
153
153
  Requires-Dist: selenium-stealth==1.0.6; extra == "selenium-stealth"
154
154
  Provides-Extra: selenium-wire
@@ -820,6 +820,7 @@ pytest test_coffee_cart.py --trace
820
820
  --firefox-pref=SET # (Set a Firefox preference:value set, comma-separated.)
821
821
  --extension-zip=ZIP # (Load a Chrome Extension .zip|.crx, comma-separated.)
822
822
  --extension-dir=DIR # (Load a Chrome Extension directory, comma-separated.)
823
+ --disable-features="F1,F2" # (Disable features, comma-separated, no spaces.)
823
824
  --binary-location=PATH # (Set path of the Chromium browser binary to use.)
824
825
  --driver-version=VER # (Set the chromedriver or uc_driver version to use.)
825
826
  --sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
@@ -1471,22 +1472,24 @@ self.click("a.analytics") # Clicks the generated button
1471
1472
 
1472
1473
  <h3>🔵 How to use deferred asserts:</h3>
1473
1474
 
1474
- <p>Let's say you want to verify multiple different elements on a web page in a single test, but you don't want the test to fail until you verified several elements at once so that you don't have to rerun the test to find more missing elements on the same page. That's where deferred asserts come in. Here's the example:</p>
1475
+ <p>Let's say you want to verify multiple different elements on a web page in a single test, but you don't want the test to fail until you verified several elements at once so that you don't have to rerun the test to find more missing elements on the same page. That's where deferred asserts come in. Here's an example:</p>
1475
1476
 
1476
1477
  ```python
1477
1478
  from seleniumbase import BaseCase
1478
1479
  BaseCase.main(__name__, __file__)
1479
1480
 
1480
- class MyTestClass(BaseCase):
1481
+ class DeferredAssertTests(BaseCase):
1481
1482
  def test_deferred_asserts(self):
1482
- self.open('https://xkcd.com/993/')
1483
- self.wait_for_element('#comic')
1483
+ self.open("https://xkcd.com/993/")
1484
+ self.wait_for_element("#comic")
1484
1485
  self.deferred_assert_element('img[alt="Brand Identity"]')
1485
1486
  self.deferred_assert_element('img[alt="Rocket Ship"]') # Will Fail
1486
- self.deferred_assert_element('#comicmap')
1487
- self.deferred_assert_text('Fake Item', '#middleContainer') # Will Fail
1488
- self.deferred_assert_text('Random', '#middleContainer')
1487
+ self.deferred_assert_element("#comicmap")
1488
+ self.deferred_assert_text("Fake Item", "ul.comicNav") # Will Fail
1489
+ self.deferred_assert_text("Random", "ul.comicNav")
1489
1490
  self.deferred_assert_element('a[name="Super Fake !!!"]') # Will Fail
1491
+ self.deferred_assert_exact_text("Brand Identity", "#ctitle")
1492
+ self.deferred_assert_exact_text("Fake Food", "#comic") # Will Fail
1490
1493
  self.process_deferred_asserts()
1491
1494
  ```
1492
1495
 
@@ -662,6 +662,7 @@ pytest test_coffee_cart.py --trace
662
662
  --firefox-pref=SET # (Set a Firefox preference:value set, comma-separated.)
663
663
  --extension-zip=ZIP # (Load a Chrome Extension .zip|.crx, comma-separated.)
664
664
  --extension-dir=DIR # (Load a Chrome Extension directory, comma-separated.)
665
+ --disable-features="F1,F2" # (Disable features, comma-separated, no spaces.)
665
666
  --binary-location=PATH # (Set path of the Chromium browser binary to use.)
666
667
  --driver-version=VER # (Set the chromedriver or uc_driver version to use.)
667
668
  --sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
@@ -1313,22 +1314,24 @@ self.click("a.analytics") # Clicks the generated button
1313
1314
 
1314
1315
  <h3>🔵 How to use deferred asserts:</h3>
1315
1316
 
1316
- <p>Let's say you want to verify multiple different elements on a web page in a single test, but you don't want the test to fail until you verified several elements at once so that you don't have to rerun the test to find more missing elements on the same page. That's where deferred asserts come in. Here's the example:</p>
1317
+ <p>Let's say you want to verify multiple different elements on a web page in a single test, but you don't want the test to fail until you verified several elements at once so that you don't have to rerun the test to find more missing elements on the same page. That's where deferred asserts come in. Here's an example:</p>
1317
1318
 
1318
1319
  ```python
1319
1320
  from seleniumbase import BaseCase
1320
1321
  BaseCase.main(__name__, __file__)
1321
1322
 
1322
- class MyTestClass(BaseCase):
1323
+ class DeferredAssertTests(BaseCase):
1323
1324
  def test_deferred_asserts(self):
1324
- self.open('https://xkcd.com/993/')
1325
- self.wait_for_element('#comic')
1325
+ self.open("https://xkcd.com/993/")
1326
+ self.wait_for_element("#comic")
1326
1327
  self.deferred_assert_element('img[alt="Brand Identity"]')
1327
1328
  self.deferred_assert_element('img[alt="Rocket Ship"]') # Will Fail
1328
- self.deferred_assert_element('#comicmap')
1329
- self.deferred_assert_text('Fake Item', '#middleContainer') # Will Fail
1330
- self.deferred_assert_text('Random', '#middleContainer')
1329
+ self.deferred_assert_element("#comicmap")
1330
+ self.deferred_assert_text("Fake Item", "ul.comicNav") # Will Fail
1331
+ self.deferred_assert_text("Random", "ul.comicNav")
1331
1332
  self.deferred_assert_element('a[name="Super Fake !!!"]') # Will Fail
1333
+ self.deferred_assert_exact_text("Brand Identity", "#ctitle")
1334
+ self.deferred_assert_exact_text("Fake Food", "#comic") # Will Fail
1332
1335
  self.process_deferred_asserts()
1333
1336
  ```
1334
1337
 
@@ -0,0 +1,14 @@
1
+ try: # Run with "pytest" (relative imports are valid)
2
+ from .base_test_case import BaseTestCase
3
+ from .page_objects import Page
4
+ except (ImportError, ValueError): # Run with "python"
5
+ from base_test_case import BaseTestCase
6
+ from page_objects import Page
7
+ BaseTestCase.main(__name__, __file__)
8
+
9
+
10
+ class MyTestClass(BaseTestCase):
11
+ def test_boilerplate(self):
12
+ self.login()
13
+ self.example_method()
14
+ self.assert_element(Page.html)
@@ -15,6 +15,6 @@ class GitHubTests(BaseCase):
15
15
  self.highlight("div.Layout-sidebar")
16
16
  self.assert_element("div.repository-content")
17
17
  self.assert_text("SeleniumBase", "strong a")
18
- self.click('a[title="seleniumbase"]')
18
+ self.js_click('a[title="seleniumbase"]')
19
19
  self.slow_click('td[class*="large"] a[title="fixtures"]')
20
20
  self.assert_element('td[class*="large"] a[title="base_case.py"]')
@@ -81,6 +81,7 @@ if pure_python:
81
81
  sb.window_size = None
82
82
  sb.maximize_option = False
83
83
  sb.visual_baseline = False
84
+ sb.disable_features = None
84
85
  sb._disable_beforeunload = False
85
86
  sb.save_screenshot_after_test = False
86
87
  sb.no_screenshot_after_test = False
@@ -6,15 +6,15 @@ class DocsSiteTests(BaseCase):
6
6
  def test_docs(self):
7
7
  self.open("https://seleniumbase.io/help_docs/customizing_test_runs/")
8
8
  self.assert_text("Command Line Options", "h1")
9
- self.js_click('a[href="../../examples/example_logs/ReadMe/"]')
9
+ self.js_click('a[href$="/examples/example_logs/ReadMe/"]')
10
10
  self.assert_text("Dashboard / Reports", "h1")
11
- self.js_click('a[href*="/seleniumbase/console_scripts/ReadMe/"]')
11
+ self.js_click('a[href$="/seleniumbase/console_scripts/ReadMe/"]')
12
12
  self.assert_text("Console Scripts", "h1")
13
- self.js_click('a[href="../../../help_docs/syntax_formats/"]')
13
+ self.js_click('a[href$="/help_docs/syntax_formats/"]')
14
14
  self.assert_text("Syntax Formats", "h1")
15
- self.js_click('a[href="../recorder_mode/"]')
15
+ self.js_click('a[href$="/recorder_mode/"]')
16
16
  self.assert_text("Recorder Mode", "h1")
17
- self.js_click('a[href="../method_summary/"]')
17
+ self.js_click('a[href$="/method_summary/"]')
18
18
  self.assert_text("API Reference", "h1")
19
19
  self.click('img[alt="logo"]')
20
20
  self.assert_text("SeleniumBase", "h1")
@@ -6,6 +6,9 @@ BaseCase.main(__name__, __file__)
6
6
 
7
7
  class DownloadImages(BaseCase):
8
8
  def test_download_images_directly(self):
9
+ if self._multithreaded:
10
+ self.open_if_not_url("about:blank")
11
+ self.skip("Skipping test in multi-threaded mode.")
9
12
  self.open("seleniumbase.io/examples/chart_maker/ReadMe")
10
13
  img_elements_with_src = self.find_elements("img[src]")
11
14
  unique_src_values = []
@@ -27,7 +30,6 @@ class DownloadImages(BaseCase):
27
30
  def test_download_images_via_screenshot(self):
28
31
  if self.recorder_mode:
29
32
  self.open("about:blank")
30
- print("Skipping test in Recorder Mode.")
31
33
  self.skip("Skipping test in Recorder Mode.")
32
34
  self.open("seleniumbase.io/error_page/")
33
35
  img_elements_with_src = self.find_elements("img[src]")
@@ -24,8 +24,8 @@ class HackingTests(BaseCase):
24
24
  self.highlight("h1.b_logo", loops=8)
25
25
  self.highlight_click('[href*="github.com/seleniumbase/SeleniumBase"]')
26
26
  self.highlight_click('[href="/seleniumbase/SeleniumBase"]')
27
- self.highlight_click('a[title="examples"]')
28
- self.assert_text("examples", "#file-name-id-wide")
27
+ self.assert_text("SeleniumBase", "strong a")
28
+ self.js_click('a[title="examples"]')
29
29
  self.highlight('td[class*="large"] a[title="test_hack_search.py"]')
30
30
  self.click('td[class*="large"] a[title="test_hack_search.py"]')
31
31
  self.assert_text("test_hack_search.py", "#file-name-id-wide")
@@ -8,7 +8,7 @@ class TodoMVC(BaseCase):
8
8
  def test_todomvc(self, framework):
9
9
  self.open("https://todomvc.com/")
10
10
  self.clear_local_storage()
11
- self.click('a[href="examples/%s"]' % framework)
11
+ self.click('a[href*="examples/%s/dist"]' % framework)
12
12
  self.assert_element("section.todoapp")
13
13
  self.assert_text("todos", "header h1")
14
14
  self.wait_for_ready_state_complete()
@@ -25,5 +25,5 @@ class TodoMVC(BaseCase):
25
25
  self.check_if_unchecked("ul.todo-list li:nth-of-type(2) input")
26
26
  self.check_if_unchecked("ul.todo-list li:nth-of-type(3) input")
27
27
  self.assert_text("0 items left", todo_count_span)
28
- self.click('label[for="toggle-all"]')
29
- self.assert_text("3 items left", todo_count_span)
28
+ self.click("button.clear-completed")
29
+ self.assert_element_not_visible(todo_count_span)
@@ -7,7 +7,7 @@ class МойТестовыйКласс(ТестНаСелен):
7
7
  def test_пример_1(self):
8
8
  self.открыть("https://ru.wikipedia.org/wiki/")
9
9
  self.подтвердить_элемент('[title="Русский язык"]')
10
- self.подтвердить_текст("Википедия", "h2.main-wikimedia-header")
10
+ self.подтвердить_текст("Википедия", "div.main-wikimedia-header")
11
11
  self.введите("#searchInput", "МГУ")
12
12
  self.нажмите("#searchButton")
13
13
  self.подтвердить_текст("университет", "#firstHeading")
@@ -138,6 +138,7 @@ pytest my_first_test.py --settings-file=custom_settings.py
138
138
  --firefox-pref=SET # (Set a Firefox preference:value set, comma-separated.)
139
139
  --extension-zip=ZIP # (Load a Chrome Extension .zip|.crx, comma-separated.)
140
140
  --extension-dir=DIR # (Load a Chrome Extension directory, comma-separated.)
141
+ --disable-features="F1,F2" # (Disable features, comma-separated, no spaces.)
141
142
  --binary-location=PATH # (Set path of the Chromium browser binary to use.)
142
143
  --driver-version=VER # (Set the chromedriver or uc_driver version to use.)
143
144
  --sjw # (Skip JS Waits for readyState to be "complete" or Angular to load.)
@@ -3,12 +3,12 @@
3
3
 
4
4
  regex>=2023.12.25
5
5
  pymdown-extensions>=10.7
6
- pipdeptree>=2.13.1
6
+ pipdeptree>=2.13.2
7
7
  python-dateutil>=2.8.2
8
- Markdown==3.5.1
8
+ Markdown==3.5.2
9
9
  markdown2==2.4.12
10
- MarkupSafe==2.1.3
11
- Jinja2==3.1.2
10
+ MarkupSafe==2.1.4
11
+ Jinja2==3.1.3
12
12
  click==8.1.7
13
13
  ghp-import==2.1.0
14
14
  watchdog==3.0.0
@@ -16,11 +16,11 @@ cairocffi==1.6.1
16
16
  pathspec==0.12.1
17
17
  Babel==2.14.0
18
18
  paginate==0.5.6
19
- lxml==5.0.0
19
+ lxml==5.1.0
20
20
  pyquery==2.0.0
21
21
  readtime==3.0.0
22
22
  mkdocs==1.5.3
23
- mkdocs-material==9.5.3
23
+ mkdocs-material==9.5.5
24
24
  mkdocs-exclude-search==0.6.6
25
25
  mkdocs-simple-hooks==0.1.5
26
26
  mkdocs-material-extensions==1.3.1
@@ -24,18 +24,18 @@ sniffio==1.3.0
24
24
  h11==0.14.0
25
25
  outcome==1.3.0.post0
26
26
  trio==0.22.2;python_version<"3.8"
27
- trio==0.23.2;python_version>="3.8"
27
+ trio==0.24.0;python_version>="3.8"
28
28
  trio-websocket==0.11.1
29
29
  wsproto==1.2.0
30
30
  selenium==4.11.2;python_version<"3.8"
31
- selenium==4.16.0;python_version>="3.8"
31
+ selenium==4.17.2;python_version>="3.8"
32
32
  cssselect==1.2.0
33
33
  sortedcontainers==2.4.0
34
34
  fasteners==0.19
35
35
  execnet==2.0.2
36
36
  iniconfig==2.0.0
37
37
  pluggy==1.2.0;python_version<"3.8"
38
- pluggy==1.3.0;python_version>="3.8"
38
+ pluggy==1.4.0;python_version>="3.8"
39
39
  py==1.11.0
40
40
  pytest==7.4.4
41
41
  pytest-html==2.0.1
@@ -48,7 +48,7 @@ sbvirtualdisplay==1.3.0
48
48
  behave==1.2.6
49
49
  soupsieve==2.4.1;python_version<"3.8"
50
50
  soupsieve==2.5;python_version>="3.8"
51
- beautifulsoup4==4.12.2
51
+ beautifulsoup4==4.12.3
52
52
  pygments==2.17.2
53
53
  pyreadline3==3.4.1;platform_system=="Windows"
54
54
  tabcompleter==1.3.0
@@ -70,9 +70,9 @@ coverage==7.4.0;python_version>="3.8"
70
70
  pytest-cov==4.0.0;python_version<"3.7"
71
71
  pytest-cov==4.1.0;python_version>="3.7"
72
72
  flake8==5.0.4;python_version<"3.9"
73
- flake8==6.1.0;python_version>="3.9"
73
+ flake8==7.0.0;python_version>="3.9"
74
74
  mccabe==0.7.0
75
75
  pyflakes==2.5.0;python_version<"3.9"
76
- pyflakes==3.1.0;python_version>="3.9"
76
+ pyflakes==3.2.0;python_version>="3.9"
77
77
  pycodestyle==2.9.1;python_version<"3.9"
78
78
  pycodestyle==2.11.1;python_version>="3.9"
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.22.5"
2
+ __version__ = "4.23.0"
@@ -226,6 +226,7 @@ def get_configured_sb(context):
226
226
  sb.chromium_arg = None
227
227
  sb.firefox_arg = None
228
228
  sb.firefox_pref = None
229
+ sb.disable_features = None
229
230
  sb.proxy_string = None
230
231
  sb.proxy_bypass_list = None
231
232
  sb.proxy_pac_url = None
@@ -748,6 +749,13 @@ def get_configured_sb(context):
748
749
  firefox_pref = sb.firefox_pref # revert to default
749
750
  sb.firefox_pref = firefox_pref
750
751
  continue
752
+ # Handle: -D disable-features="F1,F2" / disable_features="F1,F2"
753
+ if low_key in ["disable-features", "disable_features"]:
754
+ disable_features = userdata[key]
755
+ if disable_features == "true":
756
+ disable_features = sb.disable_features # revert to default
757
+ sb.disable_features = disable_features
758
+ continue
751
759
  # Handle: -D proxy=SERVER:PORT / proxy=USERNAME:PASSWORD@SERVER:PORT
752
760
  if low_key in ["proxy", "proxy-server", "proxy-string"]:
753
761
  proxy_string = userdata[key]
@@ -75,10 +75,11 @@ def show_basic_usage():
75
75
  seleniumbase_logo = logo_helper.get_seleniumbase_logo()
76
76
  print(seleniumbase_logo)
77
77
  print("")
78
- time.sleep(0.25) # Enough time to see the logo
78
+ time.sleep(0.28) # Enough time to see the logo
79
79
  show_package_location()
80
80
  show_version_info()
81
81
  print("")
82
+ time.sleep(0.72) # Enough time to see the version
82
83
  sc = ""
83
84
  sc += ' * USAGE: "seleniumbase [COMMAND] [PARAMETERS]"\n'
84
85
  sc += ' * OR: "sbase [COMMAND] [PARAMETERS]"\n'
@@ -763,6 +763,7 @@ def _set_chrome_options(
763
763
  user_data_dir,
764
764
  extension_zip,
765
765
  extension_dir,
766
+ disable_features,
766
767
  binary_location,
767
768
  driver_version,
768
769
  page_load_strategy,
@@ -1044,6 +1045,7 @@ def _set_chrome_options(
1044
1045
  binary_loc = detect_b_ver.get_binary_location(br_app, True)
1045
1046
  if os.path.exists(binary_loc):
1046
1047
  binary_location = binary_loc
1048
+ extra_disabled_features = []
1047
1049
  if chromium_arg:
1048
1050
  # Can be a comma-separated list of Chromium args
1049
1051
  chromium_arg_list = chromium_arg.split(",")
@@ -1069,8 +1071,13 @@ def _set_chrome_options(
1069
1071
  )
1070
1072
  if os.path.exists(binary_loc):
1071
1073
  binary_location = binary_loc
1074
+ elif "disable-features=" in chromium_arg_item:
1075
+ d_f = chromium_arg_item.split("disable-features=")[-1]
1076
+ extra_disabled_features.append(d_f)
1072
1077
  elif len(chromium_arg_item) >= 3:
1073
1078
  chrome_options.add_argument(chromium_arg_item)
1079
+ if disable_features:
1080
+ extra_disabled_features.extend(disable_features.split(","))
1074
1081
  if devtools and not headless:
1075
1082
  chrome_options.add_argument("--auto-open-devtools-for-tabs")
1076
1083
  if user_agent:
@@ -1089,19 +1096,36 @@ def _set_chrome_options(
1089
1096
  if headless or headless2 or is_using_uc(undetectable, browser_name):
1090
1097
  chrome_options.add_argument("--disable-renderer-backgrounding")
1091
1098
  chrome_options.add_argument("--disable-backgrounding-occluded-windows")
1099
+ chrome_options.add_argument("--disable-client-side-phishing-detection")
1100
+ chrome_options.add_argument("--disable-oopr-debug-crash-dump")
1101
+ chrome_options.add_argument("--disable-top-sites")
1092
1102
  chrome_options.add_argument("--ash-no-nudges")
1103
+ chrome_options.add_argument("--no-crash-upload")
1093
1104
  chrome_options.add_argument("--deny-permission-prompts")
1105
+ included_disabled_features = []
1094
1106
  if user_data_dir:
1095
- chrome_options.add_argument(
1096
- "--disable-features=OptimizationHintsFetching,Translate,"
1097
- "OptimizationTargetPrediction,PrivacySandboxSettings4,"
1098
- "DownloadBubble,DownloadBubbleV2"
1099
- )
1107
+ included_disabled_features.append("OptimizationHintsFetching")
1108
+ included_disabled_features.append("Translate")
1109
+ included_disabled_features.append("OptimizationTargetPrediction")
1110
+ included_disabled_features.append("PrivacySandboxSettings4")
1111
+ included_disabled_features.append("DownloadBubble")
1112
+ included_disabled_features.append("DownloadBubbleV2")
1113
+ for item in extra_disabled_features:
1114
+ if item not in included_disabled_features:
1115
+ included_disabled_features.append(item)
1116
+ d_f_string = ",".join(included_disabled_features)
1117
+ chrome_options.add_argument("--disable-features=%s" % d_f_string)
1100
1118
  else:
1101
- chrome_options.add_argument(
1102
- "--disable-features=OptimizationHintsFetching,Translate,"
1103
- "OptimizationTargetPrediction,DownloadBubble,DownloadBubbleV2"
1104
- )
1119
+ included_disabled_features.append("OptimizationHintsFetching")
1120
+ included_disabled_features.append("Translate")
1121
+ included_disabled_features.append("OptimizationTargetPrediction")
1122
+ included_disabled_features.append("DownloadBubble")
1123
+ included_disabled_features.append("DownloadBubbleV2")
1124
+ for item in extra_disabled_features:
1125
+ if item not in included_disabled_features:
1126
+ included_disabled_features.append(item)
1127
+ d_f_string = ",".join(included_disabled_features)
1128
+ chrome_options.add_argument("--disable-features=%s" % d_f_string)
1105
1129
  if (
1106
1130
  is_using_uc(undetectable, browser_name)
1107
1131
  and (
@@ -1338,6 +1362,7 @@ def get_driver(
1338
1362
  user_data_dir=None,
1339
1363
  extension_zip=None,
1340
1364
  extension_dir=None,
1365
+ disable_features=None,
1341
1366
  binary_location=None,
1342
1367
  driver_version=None,
1343
1368
  page_load_strategy=None,
@@ -1550,6 +1575,7 @@ def get_driver(
1550
1575
  user_data_dir,
1551
1576
  extension_zip,
1552
1577
  extension_dir,
1578
+ disable_features,
1553
1579
  binary_location,
1554
1580
  driver_version,
1555
1581
  page_load_strategy,
@@ -1605,6 +1631,7 @@ def get_driver(
1605
1631
  user_data_dir,
1606
1632
  extension_zip,
1607
1633
  extension_dir,
1634
+ disable_features,
1608
1635
  binary_location,
1609
1636
  driver_version,
1610
1637
  page_load_strategy,
@@ -1664,6 +1691,7 @@ def get_remote_driver(
1664
1691
  user_data_dir,
1665
1692
  extension_zip,
1666
1693
  extension_dir,
1694
+ disable_features,
1667
1695
  binary_location,
1668
1696
  driver_version,
1669
1697
  page_load_strategy,
@@ -1784,6 +1812,7 @@ def get_remote_driver(
1784
1812
  user_data_dir,
1785
1813
  extension_zip,
1786
1814
  extension_dir,
1815
+ disable_features,
1787
1816
  binary_location,
1788
1817
  driver_version,
1789
1818
  page_load_strategy,
@@ -1955,6 +1984,7 @@ def get_remote_driver(
1955
1984
  user_data_dir,
1956
1985
  extension_zip,
1957
1986
  extension_dir,
1987
+ disable_features,
1958
1988
  binary_location,
1959
1989
  driver_version,
1960
1990
  page_load_strategy,
@@ -2075,6 +2105,7 @@ def get_local_driver(
2075
2105
  user_data_dir,
2076
2106
  extension_zip,
2077
2107
  extension_dir,
2108
+ disable_features,
2078
2109
  binary_location,
2079
2110
  driver_version,
2080
2111
  page_load_strategy,
@@ -2570,18 +2601,6 @@ def get_local_driver(
2570
2601
  edge_options.add_argument(
2571
2602
  "--disable-autofill-keyboard-accessory-view[8]"
2572
2603
  )
2573
- edge_options.add_argument("--ash-no-nudges")
2574
- edge_options.add_argument("--deny-permission-prompts")
2575
- if user_data_dir:
2576
- edge_options.add_argument(
2577
- "--disable-features=OptimizationHintsFetching,Translate,"
2578
- "OptimizationTargetPrediction,PrivacySandboxSettings4"
2579
- )
2580
- else:
2581
- edge_options.add_argument(
2582
- "--disable-features=OptimizationHintsFetching,Translate,"
2583
- "OptimizationTargetPrediction"
2584
- )
2585
2604
  edge_options.add_argument("--disable-browser-side-navigation")
2586
2605
  edge_options.add_argument("--disable-translate")
2587
2606
  if not enable_ws:
@@ -2596,6 +2615,12 @@ def get_local_driver(
2596
2615
  if headless or headless2 or is_using_uc(undetectable, browser_name):
2597
2616
  edge_options.add_argument("--disable-renderer-backgrounding")
2598
2617
  edge_options.add_argument("--disable-backgrounding-occluded-windows")
2618
+ edge_options.add_argument("--disable-client-side-phishing-detection")
2619
+ edge_options.add_argument("--disable-oopr-debug-crash-dump")
2620
+ edge_options.add_argument("--disable-top-sites")
2621
+ edge_options.add_argument("--ash-no-nudges")
2622
+ edge_options.add_argument("--no-crash-upload")
2623
+ edge_options.add_argument("--deny-permission-prompts")
2599
2624
  if (
2600
2625
  page_load_strategy
2601
2626
  and page_load_strategy.lower() in ["eager", "none"]
@@ -2677,6 +2702,7 @@ def get_local_driver(
2677
2702
  edge_options.add_argument("--disable-gpu")
2678
2703
  if IS_LINUX:
2679
2704
  edge_options.add_argument("--disable-dev-shm-usage")
2705
+ extra_disabled_features = []
2680
2706
  set_binary = False
2681
2707
  if chromium_arg:
2682
2708
  # Can be a comma-separated list of Chromium args
@@ -2690,8 +2716,33 @@ def get_local_driver(
2690
2716
  chromium_arg_item = "--" + chromium_arg_item
2691
2717
  if "set-binary" in chromium_arg_item:
2692
2718
  set_binary = True
2719
+ elif "disable-features=" in chromium_arg_item:
2720
+ d_f = chromium_arg_item.split("disable-features=")[-1]
2721
+ extra_disabled_features.append(d_f)
2693
2722
  elif len(chromium_arg_item) >= 3:
2694
2723
  edge_options.add_argument(chromium_arg_item)
2724
+ if disable_features:
2725
+ extra_disabled_features.extend(disable_features.split(","))
2726
+ included_disabled_features = []
2727
+ if user_data_dir:
2728
+ included_disabled_features.append("OptimizationHintsFetching")
2729
+ included_disabled_features.append("Translate")
2730
+ included_disabled_features.append("OptimizationTargetPrediction")
2731
+ included_disabled_features.append("PrivacySandboxSettings4")
2732
+ for item in extra_disabled_features:
2733
+ if item not in included_disabled_features:
2734
+ included_disabled_features.append(item)
2735
+ d_f_string = ",".join(included_disabled_features)
2736
+ edge_options.add_argument("--disable-features=%s" % d_f_string)
2737
+ else:
2738
+ included_disabled_features.append("OptimizationHintsFetching")
2739
+ included_disabled_features.append("Translate")
2740
+ included_disabled_features.append("OptimizationTargetPrediction")
2741
+ for item in extra_disabled_features:
2742
+ if item not in included_disabled_features:
2743
+ included_disabled_features.append(item)
2744
+ d_f_string = ",".join(included_disabled_features)
2745
+ edge_options.add_argument("--disable-features=%s" % d_f_string)
2695
2746
  if (set_binary or IS_LINUX) and not binary_location:
2696
2747
  br_app = "edge"
2697
2748
  binary_loc = detect_b_ver.get_binary_location(br_app)
@@ -2831,6 +2882,7 @@ def get_local_driver(
2831
2882
  user_data_dir,
2832
2883
  extension_zip,
2833
2884
  extension_dir,
2885
+ disable_features,
2834
2886
  binary_location,
2835
2887
  driver_version,
2836
2888
  page_load_strategy,
@@ -3348,6 +3400,7 @@ def get_local_driver(
3348
3400
  None, # user_data_dir
3349
3401
  None, # extension_zip
3350
3402
  None, # extension_dir
3403
+ None, # disable_features
3351
3404
  binary_location,
3352
3405
  driver_version,
3353
3406
  page_load_strategy,
@@ -3565,6 +3618,7 @@ def get_local_driver(
3565
3618
  None, # user_data_dir
3566
3619
  None, # extension_zip
3567
3620
  None, # extension_dir
3621
+ None, # disable_features
3568
3622
  binary_location,
3569
3623
  driver_version,
3570
3624
  page_load_strategy,