seleniumbase 4.19.2__tar.gz → 4.20.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 (519) hide show
  1. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/PKG-INFO +2 -2
  2. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/ReadMe.md +3 -1
  3. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs.yml +1 -0
  4. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/requirements.txt +1 -1
  5. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/requirements.txt +1 -1
  6. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__version__.py +1 -1
  7. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/browser_launcher.py +85 -12
  8. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/base_case.py +12 -17
  9. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/constants.py +13 -0
  10. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/js_utils.py +1 -1
  11. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/driver_manager.py +0 -3
  12. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/pytest_plugin.py +1 -5
  13. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/sb_manager.py +9 -4
  14. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/selenium_plugin.py +2 -11
  15. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/__init__.py +6 -11
  16. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/PKG-INFO +2 -2
  17. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/requires.txt +1 -1
  18. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/setup.py +1 -1
  19. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/Workflows.md +0 -0
  20. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/pages.yml +0 -0
  21. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-mac.yml +0 -0
  22. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  23. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-windows.yml +0 -0
  24. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-package.yml +0 -0
  25. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.gitignore +0 -0
  26. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CHANGELOG.md +0 -0
  27. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CNAME +0 -0
  28. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CODE_OF_CONDUCT.md +0 -0
  29. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CONTRIBUTING.md +0 -0
  30. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/Dockerfile +0 -0
  31. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/LICENSE +0 -0
  32. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/MANIFEST.in +0 -0
  33. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/README.md +0 -0
  34. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/SECURITY.md +0 -0
  35. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/_config.yml +0 -0
  36. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/azure-pipelines.yml +0 -0
  37. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/ReadMe.md +0 -0
  38. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/__init__.py +0 -0
  39. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/basic_test.py +0 -0
  40. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/ReadMe.md +0 -0
  41. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/__init__.py +0 -0
  42. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/behave.ini +0 -0
  43. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/__init__.py +0 -0
  44. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/behave.ini +0 -0
  45. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/calculator.feature +0 -0
  46. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/environment.py +0 -0
  47. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/fail_page.feature +0 -0
  48. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/realworld.feature +0 -0
  49. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/__init__.py +0 -0
  50. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/calculator.py +0 -0
  51. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  52. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/imported.py +0 -0
  53. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  54. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/swag_labs.feature +0 -0
  55. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/ReadMe.md +0 -0
  56. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/__init__.py +0 -0
  57. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/base_test_case.py +0 -0
  58. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/boilerplate_test.py +0 -0
  59. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/classic_obj_test.py +0 -0
  60. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/page_objects.py +0 -0
  61. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/__init__.py +0 -0
  62. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  63. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  64. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  65. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  66. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/google_objects.py +0 -0
  67. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/google_test.py +0 -0
  68. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  69. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  70. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/test_page_objects.py +0 -0
  71. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/sb_fixture_test.py +0 -0
  72. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/ReadMe.md +0 -0
  73. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/mac_cap_file.py +0 -0
  74. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/sample_cap_file_BS.py +0 -0
  75. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/sample_cap_file_SL.py +0 -0
  76. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/selenoid_cap_file.py +0 -0
  77. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/win10_cap_file.py +0 -0
  78. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  79. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  80. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  81. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  82. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  83. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  84. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  85. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  86. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_summary.md +0 -0
  87. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/ReadMe.md +0 -0
  88. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/chart_presentation.py +0 -0
  89. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/my_chart.py +0 -0
  90. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/pie_charts.py +0 -0
  91. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_area_chart.py +0 -0
  92. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_display_chart.py +0 -0
  93. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_line_chart.py +0 -0
  94. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_multi_series.py +0 -0
  95. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_save_chart.py +0 -0
  96. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/coffee_cart_tests.py +0 -0
  97. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/custom_settings.py +0 -0
  98. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/desktop_apps/ReadMe.md +0 -0
  99. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/desktop_apps/recorder.py +0 -0
  100. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/dialog_boxes/ReadMe.md +0 -0
  101. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  102. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/edge_test.py +0 -0
  103. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_config.cfg +0 -0
  104. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/ReadMe.md +0 -0
  105. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/basic_test_info.txt +0 -0
  106. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/page_source.html +0 -0
  107. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/screenshot.png +0 -0
  108. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/github_test.py +0 -0
  109. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/gui_test_runner.py +0 -0
  110. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/hack_the_planet.py +0 -0
  111. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/handle_alert_test.py +0 -0
  112. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/iframe_tests.py +0 -0
  113. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/locale_code_test.py +0 -0
  114. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/ReadMe.md +0 -0
  115. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/__init__.py +0 -0
  116. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  117. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/masterqa_test_1.py +0 -0
  118. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/pytest.ini +0 -0
  119. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/__init__.py +0 -0
  120. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/ReadMe.md +0 -0
  121. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/__init__.py +0 -0
  122. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/example_spec.js +0 -0
  123. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/example_test.py +0 -0
  124. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/input_spec.js +0 -0
  125. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/input_test.py +0 -0
  126. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  127. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/mat_paginator_test.py +0 -0
  128. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/ReadMe.md +0 -0
  129. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/__init__.py +0 -0
  130. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  131. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  132. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/messy_raw.py +0 -0
  133. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/pytest.ini +0 -0
  134. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/refined_raw.py +0 -0
  135. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  136. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/my_first_test.py +0 -0
  137. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/nth_child_test.py +0 -0
  138. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/__init__.py +0 -0
  139. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/demo_page.html +0 -0
  140. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/load_html_test.py +0 -0
  141. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_demo_page.py +0 -0
  142. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_handle_alerts.py +0 -0
  143. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_request_fixture.py +0 -0
  144. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_user_agent.py +0 -0
  145. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/old_wordle_script.py +0 -0
  146. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/parameterized_test.py +0 -0
  147. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/performance_test.py +0 -0
  148. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/ReadMe.md +0 -0
  149. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/core_presentation.py +0 -0
  150. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/edge_presentation.py +0 -0
  151. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/fundamentals.py +0 -0
  152. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/my_presentation.py +0 -0
  153. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/py_virtual_envs.py +0 -0
  154. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/proxy_test.py +0 -0
  155. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/pytest.ini +0 -0
  156. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/rate_limiting_test.py +0 -0
  157. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_browser_launcher.py +0 -0
  158. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_call.py +0 -0
  159. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_driver_context.py +0 -0
  160. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_file_call.py +0 -0
  161. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_main_call.py +0 -0
  162. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_parameter_script.py +0 -0
  163. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_sb.py +0 -0
  164. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_test_scripts.py +0 -0
  165. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_uc_mode.py +0 -0
  166. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/setup.cfg +0 -0
  167. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/shadow_root_test.py +0 -0
  168. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/swag_labs_user_tests.py +0 -0
  169. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_apple_site.py +0 -0
  170. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_assert_elements.py +0 -0
  171. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_calculator.py +0 -0
  172. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_canvas.py +0 -0
  173. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_checkboxes.py +0 -0
  174. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_chinese_pdf.py +0 -0
  175. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_chromedriver.py +0 -0
  176. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_coffee_cart.py +0 -0
  177. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_console_logging.py +0 -0
  178. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_contains_selector.py +0 -0
  179. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_cycle_elements.py +0 -0
  180. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_decryption.py +0 -0
  181. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_deferred_asserts.py +0 -0
  182. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_demo_site.py +0 -0
  183. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_detect_404s.py +0 -0
  184. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_docs_site.py +0 -0
  185. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_double_click.py +0 -0
  186. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_download_files.py +0 -0
  187. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_download_images.py +0 -0
  188. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_drag_and_drop.py +0 -0
  189. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_error_page.py +0 -0
  190. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_event_firing.py +0 -0
  191. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_fail.py +0 -0
  192. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_geolocation.py +0 -0
  193. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_coffee.py +0 -0
  194. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_locale_code.py +0 -0
  195. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_pdf_text.py +0 -0
  196. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_user_agent.py +0 -0
  197. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_hack_search.py +0 -0
  198. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_image_saving.py +0 -0
  199. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_inspect_html.py +0 -0
  200. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_login.py +0 -0
  201. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_markers.py +0 -0
  202. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_mfa_login.py +0 -0
  203. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_multiple_drivers.py +0 -0
  204. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_null.py +0 -0
  205. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_override_driver.py +0 -0
  206. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_override_sb_fixture.py +0 -0
  207. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_parse_soup.py +0 -0
  208. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_pdf_asserts.py +0 -0
  209. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_pytest_parametrize.py +0 -0
  210. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_repeat_tests.py +0 -0
  211. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_request_sb_fixture.py +0 -0
  212. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_save_screenshots.py +0 -0
  213. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_sb_fixture.py +0 -0
  214. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_scrape_bing.py +0 -0
  215. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_select_options.py +0 -0
  216. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_shadow_dom.py +0 -0
  217. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_show_file_choosers.py +0 -0
  218. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_skype_site.py +0 -0
  219. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_suite.py +0 -0
  220. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_swag_labs.py +0 -0
  221. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_tinymce.py +0 -0
  222. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_todomvc.py +0 -0
  223. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_url_asserts.py +0 -0
  224. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_usefixtures.py +0 -0
  225. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_verify_chromedriver.py +0 -0
  226. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_window_switching.py +0 -0
  227. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_xfail.py +0 -0
  228. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_xkcd.py +0 -0
  229. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/time_limit_test.py +0 -0
  230. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/ReadMe.md +0 -0
  231. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  232. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  233. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  234. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/google_tour.py +0 -0
  235. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  236. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/introjs_google_tour.py +0 -0
  237. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/maps_introjs_tour.py +0 -0
  238. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/octocat_tour.py +0 -0
  239. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/shepherd_google_tour.py +0 -0
  240. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/xkcd_tour.py +0 -0
  241. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/ReadMe.md +0 -0
  242. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/chinese_test_1.py +0 -0
  243. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/dutch_test_1.py +0 -0
  244. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/english_test_1.py +0 -0
  245. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/french_test_1.py +0 -0
  246. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/italian_test_1.py +0 -0
  247. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/japanese_test_1.py +0 -0
  248. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/korean_test_1.py +0 -0
  249. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/portuguese_test_1.py +0 -0
  250. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/pytest.ini +0 -0
  251. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/russian_test_1.py +0 -0
  252. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/spanish_test_1.py +0 -0
  253. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/uc_cdp_events.py +0 -0
  254. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/unit_tests/ReadMe.md +0 -0
  255. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/unit_tests/verify_framework.py +0 -0
  256. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/upgrade_chromedriver.py +0 -0
  257. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/upload_file_test.py +0 -0
  258. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/user_agent_test.py +0 -0
  259. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/verify_undetected.py +0 -0
  260. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/ReadMe.md +0 -0
  261. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/__init__.py +0 -0
  262. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  263. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  264. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  265. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  266. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  267. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  268. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/layout_test.py +0 -0
  269. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/python_home_test.py +0 -0
  270. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/test_layout_fail.py +0 -0
  271. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/xkcd_visual_test.py +0 -0
  272. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/wordle_test.py +0 -0
  273. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/xpath_test.py +0 -0
  274. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/youtube_search_test.py +0 -0
  275. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/behave_gui.md +0 -0
  276. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/case_plans.md +0 -0
  277. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/chinese.md +0 -0
  278. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/commander.md +0 -0
  279. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/customizing_test_runs.md +0 -0
  280. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/demo_mode.md +0 -0
  281. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/desired_capabilities.md +0 -0
  282. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/features_list.md +0 -0
  283. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/handling_iframes.md +0 -0
  284. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/happy_customers.md +0 -0
  285. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/hidden_files_info.md +0 -0
  286. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/how_it_works.md +0 -0
  287. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/html_inspector.md +0 -0
  288. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/install.md +0 -0
  289. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/install_python_pip_git.md +0 -0
  290. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/js_package_manager.md +0 -0
  291. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/locale_codes.md +0 -0
  292. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/method_summary.md +0 -0
  293. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/mobile_testing.md +0 -0
  294. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/mysql_installation.md +0 -0
  295. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/recorder_mode.md +0 -0
  296. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/shadow_dom.md +0 -0
  297. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/syntax_formats.md +0 -0
  298. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/thank_you.md +0 -0
  299. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/translations.md +0 -0
  300. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/useful_grep_commands.md +0 -0
  301. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/using_safari_driver.md +0 -0
  302. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/verify_webdriver.md +0 -0
  303. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/virtualenv_instructions.md +0 -0
  304. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/webdriver_installation.md +0 -0
  305. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/install.sh +0 -0
  306. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/__init__.py +0 -0
  307. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  308. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/azure/jenkins/ReadMe.md +0 -0
  309. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/ReadMe.md +0 -0
  310. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/behave.ini +0 -0
  311. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/__init__.py +0 -0
  312. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/behave.ini +0 -0
  313. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/calculator.feature +0 -0
  314. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/environment.py +0 -0
  315. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/fail_page.feature +0 -0
  316. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/realworld.feature +0 -0
  317. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/__init__.py +0 -0
  318. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/calculator.py +0 -0
  319. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/fail_page.py +0 -0
  320. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/real_world.py +0 -0
  321. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/swag_labs.py +0 -0
  322. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/swag_labs.feature +0 -0
  323. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/ReadMe.md +0 -0
  324. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/index.html +0 -0
  325. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/index.py +0 -0
  326. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/library.html +0 -0
  327. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/ReadMe.md +0 -0
  328. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/docker-entrypoint.sh +0 -0
  329. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/docker_config.cfg +0 -0
  330. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  331. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/run_docker_test_in_firefox.sh +0 -0
  332. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/ReadMe.md +0 -0
  333. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/workflows/ReadMe.md +0 -0
  334. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/workflows/extras.md +0 -0
  335. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/google_cloud/ReadMe.md +0 -0
  336. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/katalon/ReadMe.md +0 -0
  337. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/Linuxfile.sh +0 -0
  338. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/ReadMe.md +0 -0
  339. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/Xvfb_launcher.sh +0 -0
  340. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/jenkins_permissions.sh +0 -0
  341. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/tomcat_permissions.sh +0 -0
  342. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/ReadMe.md +0 -0
  343. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/__init__.py +0 -0
  344. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/index.html +0 -0
  345. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/my_first_test.py +0 -0
  346. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/npm-shrinkwrap.json +0 -0
  347. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/package.json +0 -0
  348. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/server.js +0 -0
  349. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/test_demo_site.py +0 -0
  350. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/selenium_grid/ReadMe.md +0 -0
  351. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/selenium_ide/ReadMe.md +0 -0
  352. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/ReadMe.txt +0 -0
  353. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/docs_instructions.txt +0 -0
  354. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie.png +0 -0
  355. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie_2.png +0 -0
  356. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie_3.png +0 -0
  357. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/favicon.ico +0 -0
  358. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/grad_logo.png +0 -0
  359. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_icon.png +0 -0
  360. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo.png +0 -0
  361. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo2.png +0 -0
  362. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo3.png +0 -0
  363. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3.png +0 -0
  364. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3a.png +0 -0
  365. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3b.png +0 -0
  366. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3c.png +0 -0
  367. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo4.png +0 -0
  368. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo5.png +0 -0
  369. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo6.png +0 -0
  370. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo7.png +0 -0
  371. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_icon.png +0 -0
  372. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_logo_10.png +0 -0
  373. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_logo_7.png +0 -0
  374. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/side_by_side.png +0 -0
  375. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_facebook.svg +0 -0
  376. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_github.svg +0 -0
  377. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_gitter.svg +0 -0
  378. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_instagram.svg +0 -0
  379. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_twitter.svg +0 -0
  380. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/index.txt +0 -0
  381. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/prepare.py +0 -0
  382. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/pytest.ini +0 -0
  383. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/ReadMe.txt +0 -0
  384. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/__init__.py +0 -0
  385. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/__main__.py +0 -0
  386. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/steps.py +0 -0
  387. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/ReadMe.md +0 -0
  388. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__init__.py +0 -0
  389. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__main__.py +0 -0
  390. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/__init__.py +0 -0
  391. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/behave_helper.py +0 -0
  392. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/behave_sb.py +0 -0
  393. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/steps.py +0 -0
  394. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/ReadMe.md +0 -0
  395. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/__init__.py +0 -0
  396. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/decorators.py +0 -0
  397. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/encryption.py +0 -0
  398. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/exceptions.py +0 -0
  399. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/obfuscate.py +0 -0
  400. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/unobfuscate.py +0 -0
  401. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/__init__.py +0 -0
  402. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/ad_block_list.py +0 -0
  403. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/proxy_list.py +0 -0
  404. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/settings.py +0 -0
  405. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/ReadMe.md +0 -0
  406. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/__init__.py +0 -0
  407. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
  408. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
  409. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/run.py +0 -0
  410. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  411. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  412. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
  413. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_install.py +0 -0
  414. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  415. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  416. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  417. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  418. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  419. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  420. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_print.py +0 -0
  421. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  422. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/__init__.py +0 -0
  423. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/application_manager.py +0 -0
  424. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/capabilities_parser.py +0 -0
  425. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/colored_traceback.py +0 -0
  426. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/create_db_tables.sql +0 -0
  427. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/detect_b_ver.py +0 -0
  428. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/download_helper.py +0 -0
  429. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/encoded_images.py +0 -0
  430. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/jqc_helper.py +0 -0
  431. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/log_helper.py +0 -0
  432. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/mysql.py +0 -0
  433. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/proxy_helper.py +0 -0
  434. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/recorder_helper.py +0 -0
  435. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/report_helper.py +0 -0
  436. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/s3_manager.py +0 -0
  437. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/sb_driver.py +0 -0
  438. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/session_helper.py +0 -0
  439. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/settings_parser.py +0 -0
  440. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/style_sheet.py +0 -0
  441. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/testcase_manager.py +0 -0
  442. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/tour_helper.py +0 -0
  443. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/visual_helper.py +0 -0
  444. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/drivers/ReadMe.md +0 -0
  445. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/drivers/__init__.py +0 -0
  446. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/ReadMe.md +0 -0
  447. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/__init__.py +0 -0
  448. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/ad_block.zip +0 -0
  449. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/disable_csp.zip +0 -0
  450. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/recorder.zip +0 -0
  451. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
  452. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/__init__.py +0 -0
  453. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  454. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/errors.py +0 -0
  455. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/page_actions.py +0 -0
  456. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/page_utils.py +0 -0
  457. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/shared_utils.py +0 -0
  458. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
  459. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/words.py +0 -0
  460. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  461. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/__init__.py +0 -0
  462. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/active_css_js.py +0 -0
  463. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/live_js.py +0 -0
  464. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/recorder_js.py +0 -0
  465. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/ReadMe.md +0 -0
  466. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/__init__.py +0 -0
  467. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/master_qa.py +0 -0
  468. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/__init__.py +0 -0
  469. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/base_plugin.py +0 -0
  470. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/basic_test_info.py +0 -0
  471. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  472. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/page_source.py +0 -0
  473. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  474. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/screen_shots.py +0 -0
  475. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/ReadMe.md +0 -0
  476. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/__init__.py +0 -0
  477. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/favicon.ico +0 -0
  478. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/__init__.py +0 -0
  479. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/chinese.py +0 -0
  480. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/dutch.py +0 -0
  481. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/french.py +0 -0
  482. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/italian.py +0 -0
  483. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/japanese.py +0 -0
  484. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/korean.py +0 -0
  485. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/master_dict.py +0 -0
  486. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/portuguese.py +0 -0
  487. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/russian.py +0 -0
  488. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/spanish.py +0 -0
  489. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/translator.py +0 -0
  490. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/cdp.py +0 -0
  491. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/dprocess.py +0 -0
  492. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/options.py +0 -0
  493. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/patcher.py +0 -0
  494. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/reactor.py +0 -0
  495. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/webelement.py +0 -0
  496. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/__init__.py +0 -0
  497. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  498. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  499. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  500. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  501. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  502. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  503. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  504. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  505. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  506. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  507. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  508. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  509. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  510. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  511. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  512. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
  513. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
  514. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/entry_points.txt +0 -0
  515. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/top_level.txt +0 -0
  516. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/setup.cfg +0 -0
  517. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/virtualenv_install.sh +0 -0
  518. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/win_install.bat +0 -0
  519. {seleniumbase-4.19.2 → seleniumbase-4.20.0}/win_virtualenv.bat +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.19.2
3
+ Version: 4.20.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
@@ -82,7 +82,7 @@ Requires-Dist: trio==0.22.2
82
82
  Requires-Dist: trio-websocket==0.11.1
83
83
  Requires-Dist: wsproto==1.2.0
84
84
  Requires-Dist: selenium==4.11.2; python_version < "3.8"
85
- Requires-Dist: selenium==4.13.0; python_version >= "3.8"
85
+ Requires-Dist: selenium==4.14.0; python_version >= "3.8"
86
86
  Requires-Dist: cssselect==1.2.0
87
87
  Requires-Dist: sortedcontainers==2.4.0
88
88
  Requires-Dist: fasteners==0.19
@@ -81,11 +81,13 @@
81
81
 
82
82
  <h3>Demo Pages / Web Examples</h3>
83
83
 
84
+ <div><a href="https://seleniumbase.io/coffee/"><b>Coffee Cart (Test Page)</b></a></div>
84
85
  <div><a href="https://seleniumbase.io/demo_page"><b>Demo Page (Test Page)</b></a></div>
86
+ <div><a href="https://seleniumbase.io/simple/login"><b>Simple App (Test Page)</b></a></div>
85
87
  <div><a href="https://seleniumbase.io/realworld/login"><b>MFA Login (Test Page)</b></a></div>
86
88
  <div><a href="https://seleniumbase.io/tinymce/"><b>TinyMCE (Test Page)</b></a></div>
87
89
  <div><a href="https://seleniumbase.io/error_page/"><b>Error Page (Test Page)</b></a></div>
88
- <div><a href="https://seleniumbase.io/other/drag_and_drop"><b>Drag-&-Drop (Test Page)</b></a></div>
90
+ <div><a href="https://seleniumbase.io/other/drag_and_drop"><b>Drag & Drop (Test Page)</b></a></div>
89
91
  <div><a href="https://seleniumbase.io/devices/"><b>Device Farm (Virtual)</b></a></div>
90
92
  <div><a href="https://seleniumbase.io/w3schools/"><b>HTML Playground Page</b></a></div>
91
93
  <div><a href="https://seleniumbase.io/w3schools/sbase"><b>SeleniumBase in iframe</b></a></div>
@@ -133,6 +133,7 @@ nav:
133
133
  - Demo Pages:
134
134
  - 🍵 Coffee Cart (Test App): https://seleniumbase.io/coffee/
135
135
  - 📑 Demo Page (Test Page): https://seleniumbase.io/demo_page
136
+ - 🔑 Simple App (Test Page): https://seleniumbase.io/simple/login
136
137
  - 🔑 MFA Login (Test App): https://seleniumbase.io/realworld/login
137
138
  - 📝 TinyMCE (Test Page): https://seleniumbase.io/tinymce/
138
139
  - 🔢 Calculator (Test App): https://seleniumbase.io/apps/calculator
@@ -20,7 +20,7 @@ paginate==0.5.6
20
20
  pyquery==2.0.0
21
21
  readtime==3.0.0
22
22
  mkdocs==1.5.3
23
- mkdocs-material==9.4.4
23
+ mkdocs-material==9.4.5
24
24
  mkdocs-exclude-search==0.6.5
25
25
  mkdocs-simple-hooks==0.1.5
26
26
  mkdocs-material-extensions==1.2
@@ -25,7 +25,7 @@ trio==0.22.2
25
25
  trio-websocket==0.11.1
26
26
  wsproto==1.2.0
27
27
  selenium==4.11.2;python_version<"3.8"
28
- selenium==4.13.0;python_version>="3.8"
28
+ selenium==4.14.0;python_version>="3.8"
29
29
  cssselect==1.2.0
30
30
  sortedcontainers==2.4.0
31
31
  fasteners==0.19
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.19.2"
2
+ __version__ = "4.20.0"
@@ -319,7 +319,15 @@ def has_cf(text):
319
319
  return False
320
320
 
321
321
 
322
- def uc_special_open_if_cf(driver, url, proxy_string=None):
322
+ def uc_special_open_if_cf(
323
+ driver,
324
+ url,
325
+ proxy_string=None,
326
+ mobile_emulator=None,
327
+ device_width=None,
328
+ device_height=None,
329
+ device_pixel_ratio=None,
330
+ ):
323
331
  if (
324
332
  url.startswith("http:") or url.startswith("https:")
325
333
  ):
@@ -345,6 +353,36 @@ def uc_special_open_if_cf(driver, url, proxy_string=None):
345
353
  driver.close()
346
354
  driver.switch_to.window(driver.window_handles[-1])
347
355
  time.sleep(0.02)
356
+ if mobile_emulator:
357
+ uc_metrics = {}
358
+ if (
359
+ type(device_width) is int
360
+ and type(device_height) is int
361
+ and type(device_pixel_ratio) is int
362
+ ):
363
+ uc_metrics["width"] = device_width
364
+ uc_metrics["height"] = device_height
365
+ uc_metrics["pixelRatio"] = device_pixel_ratio
366
+ else:
367
+ uc_metrics["width"] = constants.Mobile.WIDTH
368
+ uc_metrics["height"] = constants.Mobile.HEIGHT
369
+ uc_metrics["pixelRatio"] = constants.Mobile.RATIO
370
+ set_device_metrics_override = dict(
371
+ {
372
+ "width": uc_metrics["width"],
373
+ "height": uc_metrics["height"],
374
+ "deviceScaleFactor": uc_metrics["pixelRatio"],
375
+ "mobile": True
376
+ }
377
+ )
378
+ try:
379
+ driver.execute_cdp_cmd(
380
+ 'Emulation.setDeviceMetricsOverride',
381
+ set_device_metrics_override
382
+ )
383
+ except Exception:
384
+ pass
385
+ time.sleep(0.03)
348
386
  else:
349
387
  driver.default_get(url) # The original one
350
388
  else:
@@ -739,7 +777,7 @@ def _set_chrome_options(
739
777
  "excludeSwitches",
740
778
  ["enable-automation", "enable-logging", "enable-blink-features"],
741
779
  )
742
- if mobile_emulator:
780
+ if mobile_emulator and not is_using_uc(undetectable, browser_name):
743
781
  emulator_settings = {}
744
782
  device_metrics = {}
745
783
  if (
@@ -751,9 +789,9 @@ def _set_chrome_options(
751
789
  device_metrics["height"] = device_height
752
790
  device_metrics["pixelRatio"] = device_pixel_ratio
753
791
  else:
754
- device_metrics["width"] = 360
755
- device_metrics["height"] = 640
756
- device_metrics["pixelRatio"] = 2
792
+ device_metrics["width"] = constants.Mobile.WIDTH
793
+ device_metrics["height"] = constants.Mobile.HEIGHT
794
+ device_metrics["pixelRatio"] = constants.Mobile.RATIO
757
795
  emulator_settings["deviceMetrics"] = device_metrics
758
796
  if user_agent:
759
797
  emulator_settings["userAgent"] = user_agent
@@ -1279,8 +1317,8 @@ def get_driver(
1279
1317
  if (uc_cdp_events or uc_subprocess) and not undetectable:
1280
1318
  undetectable = True
1281
1319
  if is_using_uc(undetectable, browser_name) and mobile_emulator:
1282
- mobile_emulator = False
1283
- user_agent = None
1320
+ if not user_agent:
1321
+ user_agent = constants.Mobile.AGENT
1284
1322
  if page_load_strategy and page_load_strategy.lower() == "none":
1285
1323
  settings.PAGE_LOAD_STRATEGY = "none"
1286
1324
  proxy_auth = False
@@ -2359,7 +2397,7 @@ def get_local_driver(
2359
2397
  elif headless:
2360
2398
  if "--headless" not in edge_options.arguments:
2361
2399
  edge_options.add_argument("--headless")
2362
- if mobile_emulator:
2400
+ if mobile_emulator and not is_using_uc(undetectable, browser_name):
2363
2401
  emulator_settings = {}
2364
2402
  device_metrics = {}
2365
2403
  if (
@@ -2371,9 +2409,9 @@ def get_local_driver(
2371
2409
  device_metrics["height"] = device_height
2372
2410
  device_metrics["pixelRatio"] = device_pixel_ratio
2373
2411
  else:
2374
- device_metrics["width"] = 360
2375
- device_metrics["height"] = 640
2376
- device_metrics["pixelRatio"] = 2
2412
+ device_metrics["width"] = constants.Mobile.WIDTH
2413
+ device_metrics["height"] = constants.Mobile.HEIGHT
2414
+ device_metrics["pixelRatio"] = constants.Mobile.RATIO
2377
2415
  emulator_settings["deviceMetrics"] = device_metrics
2378
2416
  if user_agent:
2379
2417
  emulator_settings["userAgent"] = user_agent
@@ -3416,7 +3454,13 @@ def get_local_driver(
3416
3454
  driver.default_get = driver.get # Save copy of original
3417
3455
  if uc_activated:
3418
3456
  driver.get = lambda url: uc_special_open_if_cf(
3419
- driver, url, proxy_string
3457
+ driver,
3458
+ url,
3459
+ proxy_string,
3460
+ mobile_emulator,
3461
+ device_width,
3462
+ device_height,
3463
+ device_pixel_ratio,
3420
3464
  )
3421
3465
  driver.uc_open = lambda url: uc_open(driver, url)
3422
3466
  driver.uc_open_with_tab = (
@@ -3425,6 +3469,35 @@ def get_local_driver(
3425
3469
  driver.uc_open_with_reconnect = (
3426
3470
  lambda url: uc_open_with_reconnect(driver, url)
3427
3471
  )
3472
+ if mobile_emulator:
3473
+ uc_metrics = {}
3474
+ if (
3475
+ type(device_width) is int
3476
+ and type(device_height) is int
3477
+ and type(device_pixel_ratio) is int
3478
+ ):
3479
+ uc_metrics["width"] = device_width
3480
+ uc_metrics["height"] = device_height
3481
+ uc_metrics["pixelRatio"] = device_pixel_ratio
3482
+ else:
3483
+ uc_metrics["width"] = constants.Mobile.WIDTH
3484
+ uc_metrics["height"] = constants.Mobile.HEIGHT
3485
+ uc_metrics["pixelRatio"] = constants.Mobile.RATIO
3486
+ set_device_metrics_override = dict(
3487
+ {
3488
+ "width": uc_metrics["width"],
3489
+ "height": uc_metrics["height"],
3490
+ "deviceScaleFactor": uc_metrics["pixelRatio"],
3491
+ "mobile": True
3492
+ }
3493
+ )
3494
+ try:
3495
+ driver.execute_cdp_cmd(
3496
+ 'Emulation.setDeviceMetricsOverride',
3497
+ set_device_metrics_override
3498
+ )
3499
+ except Exception:
3500
+ pass
3428
3501
  return extend_driver(driver)
3429
3502
  else: # Running headless on Linux (and not using --uc)
3430
3503
  try:
@@ -3887,12 +3887,8 @@ class BaseCase(unittest.TestCase):
3887
3887
  if d_p_r is None:
3888
3888
  d_p_r = self.__device_pixel_ratio
3889
3889
  if is_mobile and not user_agent:
3890
- # Use the Pixel 4 user agent by default if not specified
3891
- user_agent = (
3892
- "Mozilla/5.0 (Linux; Android 11; Pixel 4 XL) "
3893
- "AppleWebKit/537.36 (KHTML, like Gecko) "
3894
- "Chrome/89.0.4389.105 Mobile Safari/537.36"
3895
- )
3890
+ # Use a Pixel user agent by default if not specified
3891
+ user_agent = constants.Mobile.AGENT
3896
3892
  valid_browsers = constants.ValidBrowsers.valid_browsers
3897
3893
  if browser_name not in valid_browsers:
3898
3894
  raise Exception(
@@ -14351,15 +14347,9 @@ class BaseCase(unittest.TestCase):
14351
14347
  self.mobile_emulator = True
14352
14348
  except Exception:
14353
14349
  raise Exception(exception_string)
14354
- if self.mobile_emulator:
14355
- if not self.user_agent:
14356
- # Use the Pixel 4 user agent by default if not specified
14357
- self.user_agent = (
14358
- "Mozilla/5.0 (Linux; Android 11; Pixel 4 XL) "
14359
- "AppleWebKit/537.36 (KHTML, like Gecko) "
14360
- "Chrome/89.0.4389.105 Mobile Safari/537.36"
14361
- )
14362
-
14350
+ if self.mobile_emulator and not self.user_agent:
14351
+ # Use a Pixel user agent by default if not specified
14352
+ self.user_agent = constants.Mobile.AGENT
14363
14353
  if self.browser in ["firefox", "ie", "safari"]:
14364
14354
  # The Recorder Mode browser extension is only for Chrome/Edge.
14365
14355
  if self.recorder_mode:
@@ -15314,11 +15304,11 @@ class BaseCase(unittest.TestCase):
15314
15304
  # Post Mortem Debug Mode ("python --pdb")
15315
15305
 
15316
15306
  def __activate_debug_mode_in_teardown(self):
15317
- """Activate Debug Mode in tearDown() when using "--final-debug"."""
15307
+ """Activate Final Trace / Debug Mode"""
15318
15308
  import pdb
15319
15309
 
15320
15310
  pdb.set_trace()
15321
- # Final Debug Mode ("--final-debug")
15311
+ # Final Trace ("--ftrace")
15322
15312
 
15323
15313
  def has_exception(self):
15324
15314
  """(This method should ONLY be used in custom tearDown() methods.)
@@ -15813,6 +15803,11 @@ class BaseCase(unittest.TestCase):
15813
15803
  and sb_config._do_sb_post_mortem
15814
15804
  ):
15815
15805
  self.__activate_sb_mgr_post_mortem_debug_mode()
15806
+ elif (
15807
+ hasattr(sb_config, "_do_sb_final_trace")
15808
+ and sb_config._do_sb_final_trace
15809
+ ):
15810
+ self.__activate_debug_mode_in_teardown()
15816
15811
  # (Pynose / Behave / Pure Python) Close all open browser windows
15817
15812
  self.__quit_all_drivers()
15818
15813
  # Resume tearDown() for all test runners, (Pytest / Pynose / Behave)
@@ -346,6 +346,19 @@ class SeleniumWire:
346
346
  VER = "5.1.0"
347
347
 
348
348
 
349
+ class Mobile:
350
+ # Default values for mobile settings
351
+ WIDTH = 390
352
+ HEIGHT = 715
353
+ RATIO = 3
354
+ AGENT = (
355
+ "Mozilla/5.0 (Linux; Android 13; Pixel 7 XL "
356
+ "Build/SP2A.220505.006.A1; wv) "
357
+ "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 "
358
+ "Chrome/110.0.5028.105 Mobile Safari/537.36"
359
+ )
360
+
361
+
349
362
  class ValidBrowsers:
350
363
  valid_browsers = [
351
364
  "chrome",
@@ -910,7 +910,7 @@ def post_messenger_success_message(driver, message, msg_dur=None):
910
910
  theme = "future"
911
911
  location = "bottom_right"
912
912
  if hasattr(sb_config, "mobile_emulator") and sb_config.mobile_emulator:
913
- location = "top_center"
913
+ location = "top_right"
914
914
  set_messenger_theme(driver, theme=theme, location=location)
915
915
  post_message(driver, message, msg_dur, style="success")
916
916
  time.sleep(msg_dur + 0.07)
@@ -341,9 +341,6 @@ def Driver(
341
341
  uc_cdp_events = True
342
342
  else:
343
343
  uc_cdp_events = False
344
- if undetectable and is_mobile:
345
- is_mobile = False
346
- user_agent = None
347
344
  if use_auto_ext is None:
348
345
  if "--use-auto-ext" in sys_argv:
349
346
  use_auto_ext = True
@@ -554,7 +554,7 @@ def pytest_addoption(parser):
554
554
  help="""Designates the three device metrics of the mobile
555
555
  emulator: CSS Width, CSS Height, and Pixel-Ratio.
556
556
  Format: A comma-separated string with the 3 values.
557
- Example: "375,734,3"
557
+ Examples: "375,734,5" or "411,731,3" or "390,715,3"
558
558
  Default: None. (Will use default values if None)""",
559
559
  )
560
560
  parser.addoption(
@@ -1399,10 +1399,6 @@ def pytest_addoption(parser):
1399
1399
  "\n If you need both, override get_new_driver() from BaseCase:"
1400
1400
  "\n https://seleniumbase.io/help_docs/syntax_formats/#sb_sf_09\n"
1401
1401
  )
1402
- if undetectable and "--mobile" in sys_argv:
1403
- raise Exception(
1404
- "\n SeleniumBase doesn't support mixing --uc with --mobile\n"
1405
- )
1406
1402
 
1407
1403
 
1408
1404
  def pytest_configure(config):
@@ -308,6 +308,8 @@ def SB(
308
308
  is_mobile = True
309
309
  else:
310
310
  is_mobile = False
311
+ if is_mobile:
312
+ sb_config.mobile_emulator = True
311
313
  proxy_string = proxy
312
314
  user_agent = agent
313
315
  recorder_mode = False
@@ -370,7 +372,6 @@ def SB(
370
372
  sb_config.proxy_driver = True
371
373
  if variables and type(variables) is str and len(variables) > 0:
372
374
  import ast
373
-
374
375
  bad_input = False
375
376
  if (
376
377
  not variables.startswith("{")
@@ -458,9 +459,6 @@ def SB(
458
459
  uc_cdp_events = True
459
460
  else:
460
461
  uc_cdp_events = False
461
- if undetectable and is_mobile:
462
- is_mobile = False
463
- user_agent = None
464
462
  if use_auto_ext is None:
465
463
  if "--use-auto-ext" in sys_argv:
466
464
  use_auto_ext = True
@@ -875,6 +873,13 @@ def SB(
875
873
  finally:
876
874
  if sb._has_failure and "--pdb" in sys_argv:
877
875
  sb_config._do_sb_post_mortem = True
876
+ elif (
877
+ "--final-debug" in sys_argv
878
+ or "--final-trace" in sys_argv
879
+ or "--fdebug" in sys_argv
880
+ or "--ftrace" in sys_argv
881
+ ):
882
+ sb_config._do_sb_final_trace = True
878
883
  try:
879
884
  sb.tearDown()
880
885
  except Exception as t_e:
@@ -296,7 +296,7 @@ class SeleniumBrowser(Plugin):
296
296
  help="""Designates the three device metrics of the mobile
297
297
  emulator: CSS Width, CSS Height, and Pixel-Ratio.
298
298
  Format: A comma-separated string with the 3 values.
299
- Example: "375,734,3"
299
+ Examples: "375,734,5" or "411,731,3" or "390,715,3"
300
300
  Default: None. (Will use default values if None)""",
301
301
  )
302
302
  parser.addoption(
@@ -1163,16 +1163,6 @@ class SeleniumBrowser(Plugin):
1163
1163
  )
1164
1164
  self.options.use_wire = False
1165
1165
  test.test.use_wire = False
1166
- if self.options.mobile_emulator and self.options.undetectable:
1167
- print(
1168
- "\n"
1169
- "SeleniumBase doesn't support mixing --uc with --mobile.\n"
1170
- "(Only UC Mode without Mobile will be used for this run)\n"
1171
- )
1172
- self.options.mobile_emulator = False
1173
- test.test.mobile_emulator = False
1174
- self.options.user_agent = None
1175
- test.test.user_agent = None
1176
1166
  # Recorder Mode can still optimize scripts in --headless2 mode.
1177
1167
  if self.options.recorder_mode and self.options.headless:
1178
1168
  self.options.headless = False
@@ -1205,6 +1195,7 @@ class SeleniumBrowser(Plugin):
1205
1195
  sb_config._SMALL_TIMEOUT = settings.SMALL_TIMEOUT
1206
1196
  sb_config._LARGE_TIMEOUT = settings.LARGE_TIMEOUT
1207
1197
  sb_config._context_of_runner = False # Context Manager Compatibility
1198
+ sb_config.mobile_emulator = self.options.mobile_emulator
1208
1199
  sb_config.proxy_driver = self.options.proxy_driver
1209
1200
  sb_config.multi_proxy = self.options.multi_proxy
1210
1201
  # The driver will be received later
@@ -2,6 +2,7 @@
2
2
  import logging
3
3
  import os
4
4
  import re
5
+ import requests
5
6
  import subprocess
6
7
  import sys
7
8
  import time
@@ -138,8 +139,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
138
139
  options._session = self
139
140
  debug_host = "127.0.0.1"
140
141
  debug_port = 9222
141
- import requests
142
-
143
142
  special_port_free = False # If the port isn't free, don't use 9222
144
143
  try:
145
144
  res = requests.get("http://127.0.0.1:9222", timeout=1)
@@ -151,7 +150,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
151
150
  sys_argv = sys.argv
152
151
  arg_join = " ".join(sys_argv)
153
152
  from seleniumbase import config as sb_config
154
-
155
153
  if (
156
154
  (("-n" in sys.argv) or (" -n=" in arg_join) or ("-c" in sys.argv))
157
155
  or (hasattr(sb_config, "multi_proxy") and sb_config.multi_proxy)
@@ -197,7 +195,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
197
195
  keep_user_data_dir = True
198
196
  else:
199
197
  import tempfile
200
-
201
198
  user_data_dir = os.path.normpath(tempfile.mkdtemp())
202
199
  keep_user_data_dir = False
203
200
  arg = "--user-data-dir=%s" % user_data_dir
@@ -206,7 +203,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
206
203
  if not language:
207
204
  try:
208
205
  import locale
209
-
210
206
  language = locale.getlocale()[0].replace("_", "-")
211
207
  except Exception:
212
208
  pass
@@ -241,7 +237,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
241
237
  options.handle_prefs(user_data_dir)
242
238
  try:
243
239
  import json
244
-
245
240
  with open(
246
241
  os.path.join(
247
242
  os.path.abspath(user_data_dir),
@@ -286,19 +281,22 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
286
281
  )
287
282
  self.browser_pid = browser.pid
288
283
  service_ = None
284
+ log_output = subprocess.PIPE
285
+ if sys.version_info < (3, 8):
286
+ log_output = os.devnull
289
287
  if patch_driver:
290
288
  service_ = selenium.webdriver.chrome.service.Service(
291
289
  executable_path=self.patcher.executable_path,
292
290
  service_args=["--disable-build-check"],
293
291
  port=port,
294
- log_output=os.devnull,
292
+ log_output=log_output,
295
293
  )
296
294
  else:
297
295
  service_ = selenium.webdriver.chrome.service.Service(
298
296
  executable_path=driver_executable_path,
299
297
  service_args=["--disable-build-check"],
300
298
  port=port,
301
- log_output=os.devnull,
299
+ log_output=log_output,
302
300
  )
303
301
  if hasattr(service_, "creationflags"):
304
302
  setattr(service_, "creationflags", creationflags)
@@ -321,7 +319,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
321
319
  return super().__getattribute__(item)
322
320
  else:
323
321
  import inspect
324
-
325
322
  original = super().__getattribute__(item)
326
323
  if inspect.ismethod(original) and not inspect.isclass(original):
327
324
  def newfunc(*args, **kwargs):
@@ -455,7 +452,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
455
452
  and not self.keep_user_data_dir
456
453
  ):
457
454
  import shutil
458
-
459
455
  for _ in range(5):
460
456
  try:
461
457
  shutil.rmtree(self.user_data_dir, ignore_errors=False)
@@ -506,7 +502,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
506
502
 
507
503
  def find_chrome_executable():
508
504
  from seleniumbase.core import detect_b_ver
509
-
510
505
  binary_location = detect_b_ver.get_binary_location("google-chrome", True)
511
506
  if os.path.exists(binary_location) and os.access(binary_location, os.X_OK):
512
507
  return os.path.normpath(binary_location)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.19.2
3
+ Version: 4.20.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
@@ -82,7 +82,7 @@ Requires-Dist: trio==0.22.2
82
82
  Requires-Dist: trio-websocket==0.11.1
83
83
  Requires-Dist: wsproto==1.2.0
84
84
  Requires-Dist: selenium==4.11.2; python_version < "3.8"
85
- Requires-Dist: selenium==4.13.0; python_version >= "3.8"
85
+ Requires-Dist: selenium==4.14.0; python_version >= "3.8"
86
86
  Requires-Dist: cssselect==1.2.0
87
87
  Requires-Dist: sortedcontainers==2.4.0
88
88
  Requires-Dist: fasteners==0.19
@@ -63,7 +63,7 @@ urllib3<2.1.0,>=1.26.16
63
63
  [:python_version >= "3.8"]
64
64
  setuptools>=68.2.2
65
65
  filelock>=3.12.4
66
- selenium==4.13.0
66
+ selenium==4.14.0
67
67
  pluggy==1.3.0
68
68
  soupsieve==2.5
69
69
  markdown-it-py==3.0.0
@@ -158,7 +158,7 @@ setup(
158
158
  'trio-websocket==0.11.1',
159
159
  'wsproto==1.2.0',
160
160
  'selenium==4.11.2;python_version<"3.8"',
161
- 'selenium==4.13.0;python_version>="3.8"',
161
+ 'selenium==4.14.0;python_version>="3.8"',
162
162
  'cssselect==1.2.0',
163
163
  "sortedcontainers==2.4.0",
164
164
  'fasteners==0.19',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes