seleniumbase 4.29.3__tar.gz → 4.29.5__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 (518) hide show
  1. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/Dockerfile +20 -8
  2. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/PKG-INFO +1 -1
  3. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/ReadMe.md +2 -1
  4. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/chinese_test_1.py +2 -1
  5. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/french_test_1.py +1 -0
  6. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/uc_cdp_events.py +1 -1
  7. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/verify_undetected.py +2 -4
  8. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/chinese.md +2 -1
  9. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/method_summary.md +5 -5
  10. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/syntax_formats.md +9 -7
  11. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/translations.md +2 -1
  12. seleniumbase-4.29.5/install.sh +2 -0
  13. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/requirements.txt +2 -2
  14. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/__version__.py +1 -1
  15. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/browser_launcher.py +122 -42
  16. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/base_case.py +6 -2
  17. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/PKG-INFO +1 -1
  18. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/setup.py +1 -1
  19. seleniumbase-4.29.5/win_install.bat +2 -0
  20. seleniumbase-4.29.3/install.sh +0 -6
  21. seleniumbase-4.29.3/win_install.bat +0 -6
  22. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/Workflows.md +0 -0
  23. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/workflows/pages.yml +0 -0
  24. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/workflows/python-nightly-mac.yml +0 -0
  25. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  26. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/workflows/python-nightly-windows.yml +0 -0
  27. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.github/workflows/python-package.yml +0 -0
  28. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/.gitignore +0 -0
  29. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/CHANGELOG.md +0 -0
  30. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/CNAME +0 -0
  31. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/CODE_OF_CONDUCT.md +0 -0
  32. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/CONTRIBUTING.md +0 -0
  33. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/LICENSE +0 -0
  34. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/MANIFEST.in +0 -0
  35. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/README.md +0 -0
  36. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/SECURITY.md +0 -0
  37. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/_config.yml +0 -0
  38. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/azure-pipelines.yml +0 -0
  39. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/ReadMe.md +0 -0
  40. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/__init__.py +0 -0
  41. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/basic_test.py +0 -0
  42. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/ReadMe.md +0 -0
  43. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/__init__.py +0 -0
  44. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/behave.ini +0 -0
  45. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/__init__.py +0 -0
  46. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/behave.ini +0 -0
  47. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/calculator.feature +0 -0
  48. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/environment.py +0 -0
  49. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/fail_page.feature +0 -0
  50. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/realworld.feature +0 -0
  51. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/__init__.py +0 -0
  52. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/calculator.py +0 -0
  53. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  54. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/imported.py +0 -0
  55. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  56. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/behave_bdd/features/swag_labs.feature +0 -0
  57. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/ReadMe.md +0 -0
  58. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/__init__.py +0 -0
  59. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/base_test_case.py +0 -0
  60. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/boilerplate_test.py +0 -0
  61. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/classic_obj_test.py +0 -0
  62. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/page_objects.py +0 -0
  63. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/__init__.py +0 -0
  64. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  65. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  66. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  67. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  68. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/google_objects.py +0 -0
  69. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/google_test.py +0 -0
  70. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  71. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  72. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/samples/test_page_objects.py +0 -0
  73. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/boilerplates/sb_fixture_test.py +0 -0
  74. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/ReadMe.md +0 -0
  75. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/mac_cap_file.py +0 -0
  76. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/sample_cap_file_BS.py +0 -0
  77. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/sample_cap_file_SL.py +0 -0
  78. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/selenoid_cap_file.py +0 -0
  79. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/capabilities/win10_cap_file.py +0 -0
  80. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  81. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  82. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  83. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  84. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  85. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  86. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  87. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  88. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/case_summary.md +0 -0
  89. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/ReadMe.md +0 -0
  90. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/chart_presentation.py +0 -0
  91. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/my_chart.py +0 -0
  92. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/pie_charts.py +0 -0
  93. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/test_area_chart.py +0 -0
  94. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/test_display_chart.py +0 -0
  95. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/test_line_chart.py +0 -0
  96. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/test_multi_series.py +0 -0
  97. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/chart_maker/test_save_chart.py +0 -0
  98. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/coffee_cart_tests.py +0 -0
  99. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/custom_settings.py +0 -0
  100. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/desktop_apps/ReadMe.md +0 -0
  101. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/desktop_apps/recorder.py +0 -0
  102. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/dialog_boxes/ReadMe.md +0 -0
  103. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  104. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/edge_test.py +0 -0
  105. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/example_config.cfg +0 -0
  106. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/example_logs/ReadMe.md +0 -0
  107. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/example_logs/basic_test_info.txt +0 -0
  108. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/example_logs/page_source.html +0 -0
  109. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/example_logs/screenshot.png +0 -0
  110. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/github_test.py +0 -0
  111. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/gui_test_runner.py +0 -0
  112. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/hack_the_planet.py +0 -0
  113. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/handle_alert_test.py +0 -0
  114. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/iframe_tests.py +0 -0
  115. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/locale_code_test.py +0 -0
  116. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/master_qa/ReadMe.md +0 -0
  117. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/master_qa/__init__.py +0 -0
  118. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  119. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/master_qa/masterqa_test_1.py +0 -0
  120. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/master_qa/pytest.ini +0 -0
  121. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/__init__.py +0 -0
  122. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/ReadMe.md +0 -0
  123. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/__init__.py +0 -0
  124. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/example_spec.js +0 -0
  125. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/example_test.py +0 -0
  126. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/input_spec.js +0 -0
  127. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/input_test.py +0 -0
  128. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  129. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/protractor/mat_paginator_test.py +0 -0
  130. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/ReadMe.md +0 -0
  131. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/__init__.py +0 -0
  132. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  133. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  134. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/messy_raw.py +0 -0
  135. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/pytest.ini +0 -0
  136. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/refined_raw.py +0 -0
  137. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  138. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/my_first_test.py +0 -0
  139. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/nth_child_test.py +0 -0
  140. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/__init__.py +0 -0
  141. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/demo_page.html +0 -0
  142. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/load_html_test.py +0 -0
  143. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/test_demo_page.py +0 -0
  144. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/test_handle_alerts.py +0 -0
  145. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/test_request_fixture.py +0 -0
  146. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/offline_examples/test_user_agent.py +0 -0
  147. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/old_wordle_script.py +0 -0
  148. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/parameterized_test.py +0 -0
  149. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/performance_test.py +0 -0
  150. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/ReadMe.md +0 -0
  151. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/core_presentation.py +0 -0
  152. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/edge_presentation.py +0 -0
  153. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/fundamentals.py +0 -0
  154. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/my_presentation.py +0 -0
  155. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/presenter/py_virtual_envs.py +0 -0
  156. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/proxy_test.py +0 -0
  157. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/pytest.ini +0 -0
  158. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/rate_limiting_test.py +0 -0
  159. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_call.py +0 -0
  160. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_driver_context.py +0 -0
  161. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_file_call.py +0 -0
  162. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_main_call.py +0 -0
  163. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_parameter_script.py +0 -0
  164. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_sb.py +0 -0
  165. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_test_scripts.py +0 -0
  166. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/raw_uc_mode.py +0 -0
  167. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/setup.cfg +0 -0
  168. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/shadow_root_test.py +0 -0
  169. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/swag_labs_user_tests.py +0 -0
  170. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_apple_site.py +0 -0
  171. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_assert_elements.py +0 -0
  172. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_calculator.py +0 -0
  173. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_canvas.py +0 -0
  174. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_checkboxes.py +0 -0
  175. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_chinese_pdf.py +0 -0
  176. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_chromedriver.py +0 -0
  177. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_coffee_cart.py +0 -0
  178. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_console_logging.py +0 -0
  179. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_contains_selector.py +0 -0
  180. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_cycle_elements.py +0 -0
  181. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_decryption.py +0 -0
  182. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_deferred_asserts.py +0 -0
  183. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_demo_site.py +0 -0
  184. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_detect_404s.py +0 -0
  185. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_docs_site.py +0 -0
  186. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_double_click.py +0 -0
  187. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_download_files.py +0 -0
  188. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_download_images.py +0 -0
  189. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_drag_and_drop.py +0 -0
  190. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_error_page.py +0 -0
  191. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_event_firing.py +0 -0
  192. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_fail.py +0 -0
  193. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_geolocation.py +0 -0
  194. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_get_coffee.py +0 -0
  195. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_get_locale_code.py +0 -0
  196. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_get_pdf_text.py +0 -0
  197. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_get_user_agent.py +0 -0
  198. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_hack_search.py +0 -0
  199. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_image_saving.py +0 -0
  200. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_inspect_html.py +0 -0
  201. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_login.py +0 -0
  202. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_markers.py +0 -0
  203. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_mfa_login.py +0 -0
  204. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_multiple_drivers.py +0 -0
  205. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_null.py +0 -0
  206. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_override_driver.py +0 -0
  207. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_override_sb_fixture.py +0 -0
  208. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_parse_soup.py +0 -0
  209. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_pdf_asserts.py +0 -0
  210. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_pytest_parametrize.py +0 -0
  211. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_repeat_tests.py +0 -0
  212. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_request_sb_fixture.py +0 -0
  213. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_save_screenshots.py +0 -0
  214. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_sb_fixture.py +0 -0
  215. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_scrape_bing.py +0 -0
  216. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_select_options.py +0 -0
  217. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_shadow_dom.py +0 -0
  218. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_show_file_choosers.py +0 -0
  219. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_skype_site.py +0 -0
  220. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_suite.py +0 -0
  221. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_swag_labs.py +0 -0
  222. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_tinymce.py +0 -0
  223. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_todomvc.py +0 -0
  224. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_url_asserts.py +0 -0
  225. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_usefixtures.py +0 -0
  226. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_verify_chromedriver.py +0 -0
  227. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_window_switching.py +0 -0
  228. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_xfail.py +0 -0
  229. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/test_xkcd.py +0 -0
  230. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/time_limit_test.py +0 -0
  231. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/ReadMe.md +0 -0
  232. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  233. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  234. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  235. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/google_tour.py +0 -0
  236. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  237. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/introjs_google_tour.py +0 -0
  238. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/maps_introjs_tour.py +0 -0
  239. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/octocat_tour.py +0 -0
  240. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/shepherd_google_tour.py +0 -0
  241. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/tour_examples/xkcd_tour.py +0 -0
  242. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/dutch_test_1.py +0 -0
  243. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/english_test_1.py +0 -0
  244. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/italian_test_1.py +0 -0
  245. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/japanese_test_1.py +0 -0
  246. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/korean_test_1.py +0 -0
  247. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/portuguese_test_1.py +0 -0
  248. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/pytest.ini +0 -0
  249. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/russian_test_1.py +0 -0
  250. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/translations/spanish_test_1.py +0 -0
  251. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/unit_tests/ReadMe.md +0 -0
  252. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/unit_tests/verify_framework.py +0 -0
  253. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/upgrade_chromedriver.py +0 -0
  254. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/upload_file_test.py +0 -0
  255. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/user_agent_test.py +0 -0
  256. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/ReadMe.md +0 -0
  257. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/__init__.py +0 -0
  258. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  259. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  260. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  261. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  262. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  263. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  264. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/layout_test.py +0 -0
  265. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/python_home_test.py +0 -0
  266. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/test_layout_fail.py +0 -0
  267. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/visual_testing/xkcd_visual_test.py +0 -0
  268. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/wordle_test.py +0 -0
  269. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/xpath_test.py +0 -0
  270. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/examples/youtube_search_test.py +0 -0
  271. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/ReadMe.md +0 -0
  272. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/behave_gui.md +0 -0
  273. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/case_plans.md +0 -0
  274. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/commander.md +0 -0
  275. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/customizing_test_runs.md +0 -0
  276. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/demo_mode.md +0 -0
  277. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/desired_capabilities.md +0 -0
  278. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/features_list.md +0 -0
  279. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/handling_iframes.md +0 -0
  280. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/happy_customers.md +0 -0
  281. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/hidden_files_info.md +0 -0
  282. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/how_it_works.md +0 -0
  283. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/html_inspector.md +0 -0
  284. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/install.md +0 -0
  285. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/install_python_pip_git.md +0 -0
  286. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/js_package_manager.md +0 -0
  287. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/locale_codes.md +0 -0
  288. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/mobile_testing.md +0 -0
  289. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/mysql_installation.md +0 -0
  290. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/recorder_mode.md +0 -0
  291. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/shadow_dom.md +0 -0
  292. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/thank_you.md +0 -0
  293. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/useful_grep_commands.md +0 -0
  294. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/using_safari_driver.md +0 -0
  295. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/verify_webdriver.md +0 -0
  296. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/virtualenv_instructions.md +0 -0
  297. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/help_docs/webdriver_installation.md +0 -0
  298. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/__init__.py +0 -0
  299. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  300. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/azure/jenkins/ReadMe.md +0 -0
  301. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/ReadMe.md +0 -0
  302. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/behave.ini +0 -0
  303. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/__init__.py +0 -0
  304. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/behave.ini +0 -0
  305. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/calculator.feature +0 -0
  306. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/environment.py +0 -0
  307. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/fail_page.feature +0 -0
  308. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/realworld.feature +0 -0
  309. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/steps/__init__.py +0 -0
  310. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/steps/calculator.py +0 -0
  311. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/steps/fail_page.py +0 -0
  312. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/steps/real_world.py +0 -0
  313. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/steps/swag_labs.py +0 -0
  314. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/behave/features/swag_labs.feature +0 -0
  315. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/brython/ReadMe.md +0 -0
  316. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/brython/index.html +0 -0
  317. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/brython/index.py +0 -0
  318. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/brython/library.html +0 -0
  319. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/docker/ReadMe.md +0 -0
  320. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/docker/docker-entrypoint.sh +0 -0
  321. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  322. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/github/ReadMe.md +0 -0
  323. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/github/workflows/ReadMe.md +0 -0
  324. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/github/workflows/extras.md +0 -0
  325. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/google_cloud/ReadMe.md +0 -0
  326. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/katalon/ReadMe.md +0 -0
  327. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/linux/Linuxfile.sh +0 -0
  328. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/linux/ReadMe.md +0 -0
  329. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/linux/Xvfb_launcher.sh +0 -0
  330. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/linux/jenkins_permissions.sh +0 -0
  331. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/linux/tomcat_permissions.sh +0 -0
  332. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/ReadMe.md +0 -0
  333. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/__init__.py +0 -0
  334. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/index.html +0 -0
  335. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/my_first_test.py +0 -0
  336. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/npm-shrinkwrap.json +0 -0
  337. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/package.json +0 -0
  338. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/server.js +0 -0
  339. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/node_js/test_demo_site.py +0 -0
  340. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/selenium_grid/ReadMe.md +0 -0
  341. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/integrations/selenium_ide/ReadMe.md +0 -0
  342. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs.yml +0 -0
  343. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/ReadMe.txt +0 -0
  344. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/docs_instructions.txt +0 -0
  345. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie.png +0 -0
  346. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie_2.png +0 -0
  347. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie_3.png +0 -0
  348. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/favicon.ico +0 -0
  349. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/grad_logo.png +0 -0
  350. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/green_icon.png +0 -0
  351. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo.png +0 -0
  352. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo2.png +0 -0
  353. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo3.png +0 -0
  354. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo3.png +0 -0
  355. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo3a.png +0 -0
  356. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo3b.png +0 -0
  357. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo3c.png +0 -0
  358. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo4.png +0 -0
  359. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo5.png +0 -0
  360. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo6.png +0 -0
  361. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/logo7.png +0 -0
  362. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/sb_icon.png +0 -0
  363. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/sb_logo_10.png +0 -0
  364. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/sb_logo_7.png +0 -0
  365. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/side_by_side.png +0 -0
  366. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_facebook.svg +0 -0
  367. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_github.svg +0 -0
  368. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_gitter.svg +0 -0
  369. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_instagram.svg +0 -0
  370. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_twitter.svg +0 -0
  371. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/index.txt +0 -0
  372. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/mkdocs_build/prepare.py +0 -0
  373. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/pytest.ini +0 -0
  374. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/requirements.txt +0 -0
  375. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/sbase/ReadMe.txt +0 -0
  376. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/sbase/__init__.py +0 -0
  377. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/sbase/__main__.py +0 -0
  378. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/sbase/steps.py +0 -0
  379. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/ReadMe.md +0 -0
  380. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/__init__.py +0 -0
  381. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/__main__.py +0 -0
  382. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/behave/__init__.py +0 -0
  383. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/behave/behave_helper.py +0 -0
  384. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/behave/behave_sb.py +0 -0
  385. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/behave/steps.py +0 -0
  386. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/ReadMe.md +0 -0
  387. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/__init__.py +0 -0
  388. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/decorators.py +0 -0
  389. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/encryption.py +0 -0
  390. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/exceptions.py +0 -0
  391. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/obfuscate.py +0 -0
  392. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/common/unobfuscate.py +0 -0
  393. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/config/__init__.py +0 -0
  394. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/config/ad_block_list.py +0 -0
  395. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/config/proxy_list.py +0 -0
  396. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/config/settings.py +0 -0
  397. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/ReadMe.md +0 -0
  398. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/__init__.py +0 -0
  399. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/logo_helper.py +0 -0
  400. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/rich_helper.py +0 -0
  401. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/run.py +0 -0
  402. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  403. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  404. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_commander.py +0 -0
  405. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_install.py +0 -0
  406. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  407. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  408. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  409. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  410. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  411. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  412. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_print.py +0 -0
  413. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  414. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/__init__.py +0 -0
  415. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/application_manager.py +0 -0
  416. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/capabilities_parser.py +0 -0
  417. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/colored_traceback.py +0 -0
  418. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/create_db_tables.sql +0 -0
  419. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/detect_b_ver.py +0 -0
  420. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/download_helper.py +0 -0
  421. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/encoded_images.py +0 -0
  422. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/jqc_helper.py +0 -0
  423. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/log_helper.py +0 -0
  424. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/mysql.py +0 -0
  425. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/proxy_helper.py +0 -0
  426. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/recorder_helper.py +0 -0
  427. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/report_helper.py +0 -0
  428. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/s3_manager.py +0 -0
  429. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/sb_driver.py +0 -0
  430. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/session_helper.py +0 -0
  431. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/settings_parser.py +0 -0
  432. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/style_sheet.py +0 -0
  433. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/testcase_manager.py +0 -0
  434. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/tour_helper.py +0 -0
  435. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/core/visual_helper.py +0 -0
  436. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/drivers/ReadMe.md +0 -0
  437. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/drivers/__init__.py +0 -0
  438. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/ReadMe.md +0 -0
  439. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/__init__.py +0 -0
  440. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/ad_block.zip +0 -0
  441. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/disable_csp.zip +0 -0
  442. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/recorder.zip +0 -0
  443. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/extensions/sbase_ext.zip +0 -0
  444. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/__init__.py +0 -0
  445. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/constants.py +0 -0
  446. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  447. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/errors.py +0 -0
  448. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/js_utils.py +0 -0
  449. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/page_actions.py +0 -0
  450. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/page_utils.py +0 -0
  451. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/shared_utils.py +0 -0
  452. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/unittest_helper.py +0 -0
  453. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/words.py +0 -0
  454. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  455. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/js_code/__init__.py +0 -0
  456. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/js_code/active_css_js.py +0 -0
  457. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/js_code/live_js.py +0 -0
  458. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/js_code/recorder_js.py +0 -0
  459. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/masterqa/ReadMe.md +0 -0
  460. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/masterqa/__init__.py +0 -0
  461. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/masterqa/master_qa.py +0 -0
  462. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/__init__.py +0 -0
  463. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/base_plugin.py +0 -0
  464. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/basic_test_info.py +0 -0
  465. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  466. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/driver_manager.py +0 -0
  467. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/page_source.py +0 -0
  468. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/pytest_plugin.py +0 -0
  469. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  470. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/sb_manager.py +0 -0
  471. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/screen_shots.py +0 -0
  472. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/plugins/selenium_plugin.py +0 -0
  473. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/resources/ReadMe.md +0 -0
  474. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/resources/__init__.py +0 -0
  475. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/resources/favicon.ico +0 -0
  476. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/__init__.py +0 -0
  477. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/chinese.py +0 -0
  478. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/dutch.py +0 -0
  479. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/french.py +0 -0
  480. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/italian.py +0 -0
  481. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/japanese.py +0 -0
  482. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/korean.py +0 -0
  483. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/master_dict.py +0 -0
  484. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/portuguese.py +0 -0
  485. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/russian.py +0 -0
  486. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/spanish.py +0 -0
  487. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/translate/translator.py +0 -0
  488. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/__init__.py +0 -0
  489. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/cdp.py +0 -0
  490. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/dprocess.py +0 -0
  491. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/options.py +0 -0
  492. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/patcher.py +0 -0
  493. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/reactor.py +0 -0
  494. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/undetected/webelement.py +0 -0
  495. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/__init__.py +0 -0
  496. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  497. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  498. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  499. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  500. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  501. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  502. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  503. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  504. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  505. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  506. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  507. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  508. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  509. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  510. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  511. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/SOURCES.txt +0 -0
  512. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/dependency_links.txt +0 -0
  513. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/entry_points.txt +0 -0
  514. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/requires.txt +0 -0
  515. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/seleniumbase.egg-info/top_level.txt +0 -0
  516. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/setup.cfg +0 -0
  517. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/virtualenv_install.sh +0 -0
  518. {seleniumbase-4.29.3 → seleniumbase-4.29.5}/win_virtualenv.bat +0 -0
@@ -1,6 +1,8 @@
1
1
  # SeleniumBase Docker Image
2
2
  FROM ubuntu:22.04
3
3
  SHELL ["/bin/bash", "-o", "pipefail", "-c"]
4
+ ENV PYTHONUNBUFFERED=1
5
+ ENV PYTHONIOENCODING=UTF-8
4
6
 
5
7
  #======================
6
8
  # Locale Configuration
@@ -8,10 +10,15 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
8
10
  RUN apt-get update
9
11
  RUN apt-get install -y --no-install-recommends tzdata locales
10
12
  RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
11
- ENV LANG en_US.UTF-8
12
- ENV LANGUAGE en_US:en
13
- ENV LC_ALL en_US.UTF-8
14
- ENV TZ="America/New_York"
13
+ ENV TZ=America/New_York
14
+ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
15
+ ENV LANG=en_US.UTF-8
16
+ ENV LANGUAGE=en_US:en
17
+ ENV LC_ALL=en_US.UTF-8
18
+ RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment
19
+ RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
20
+ RUN echo "LANG=en_US.UTF-8" > /etc/locale.conf
21
+ RUN locale-gen en_US.UTF-8
15
22
 
16
23
  #======================
17
24
  # Install Common Fonts
@@ -19,6 +26,11 @@ ENV TZ="America/New_York"
19
26
  RUN apt-get update
20
27
  RUN apt-get install -y \
21
28
  fonts-liberation \
29
+ fonts-liberation2 \
30
+ fonts-font-awesome \
31
+ fonts-ubuntu \
32
+ fonts-terminus \
33
+ fonts-powerline \
22
34
  fonts-open-sans \
23
35
  fonts-mononoki \
24
36
  fonts-roboto \
@@ -53,7 +65,7 @@ RUN apt-get install -y \
53
65
  # Install useful utilities
54
66
  #==========================
55
67
  RUN apt-get update
56
- RUN apt-get install -y xdg-utils
68
+ RUN apt-get install -y xdg-utils ca-certificates
57
69
 
58
70
  #=================================
59
71
  # Install Bash Command Line Tools
@@ -72,9 +84,8 @@ RUN apt-get -qy --no-install-recommends install \
72
84
  #================
73
85
  RUN apt-get update
74
86
  RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
75
- RUN dpkg -i google-chrome-stable_current_amd64.deb
76
- RUN apt-get -fy --no-install-recommends install
77
- RUN rm google-chrome-stable_current_amd64.deb
87
+ RUN apt-get install -y ./google-chrome-stable_current_amd64.deb
88
+ RUN rm ./google-chrome-stable_current_amd64.deb
78
89
 
79
90
  #================
80
91
  # Install Python
@@ -90,6 +101,7 @@ RUN ln -s python3.10 /usr/bin/python3
90
101
  #===============
91
102
  # Cleanup Lists
92
103
  #===============
104
+ RUN apt-get clean
93
105
  RUN rm -rf /var/lib/apt/lists/*
94
106
 
95
107
  #=====================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.29.3
3
+ Version: 4.29.5
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
@@ -15,9 +15,10 @@ class 我的测试类(硒测试用例):
15
15
  self.开启("https://zh.wikipedia.org/wiki/")
16
16
  self.断言标题("维基百科,自由的百科全书")
17
17
  self.断言元素('a[title="Wikipedia:关于"]')
18
+ self.如果可见请单击('button[aria-label="关闭"]')
19
+ self.如果可见请单击('button[aria-label="關閉"]')
18
20
  self.断言元素('span:contains("创建账号")')
19
21
  self.断言元素('span:contains("登录")')
20
- self.断言文本("新闻动态", "span#新闻动态")
21
22
  self.输入文本('input[name="search"]', "舞龍")
22
23
  self.单击('button:contains("搜索")')
23
24
  self.断言文本("舞龍", "#firstHeading")
@@ -8,9 +8,10 @@ class 我的测试类(硒测试用例):
8
8
  self.开启("https://zh.wikipedia.org/wiki/")
9
9
  self.断言标题("维基百科,自由的百科全书")
10
10
  self.断言元素('a[title="Wikipedia:关于"]')
11
+ self.如果可见请单击('button[aria-label="关闭"]')
12
+ self.如果可见请单击('button[aria-label="關閉"]')
11
13
  self.断言元素('span:contains("创建账号")')
12
14
  self.断言元素('span:contains("登录")')
13
- self.断言文本("新闻动态", "span#新闻动态")
14
15
  self.输入文本('input[name="search"]', "舞龍")
15
16
  self.单击('button:contains("搜索")')
16
17
  self.断言文本("舞龍", "#firstHeading")
@@ -8,6 +8,7 @@ class MaClasseDeTest(CasDeBase):
8
8
  self.ouvrir("https://fr.wikipedia.org/wiki/")
9
9
  self.vérifier_texte("Wikipédia")
10
10
  self.vérifier_élément('[alt="Wikipédia"]')
11
+ self.cliquer_si_affiché('button[aria-label="Fermer"]')
11
12
  self.js_taper("#searchform input", "Crème brûlée")
12
13
  self.cliquer("#searchform button")
13
14
  self.vérifier_texte("Crème brûlée", "#firstHeading")
@@ -13,7 +13,7 @@ class CDPTests(BaseCase):
13
13
  )
14
14
 
15
15
  def click_turnstile_and_verify(sb):
16
- sb.uc_gui_handle_cf()
16
+ sb.uc_gui_handle_captcha()
17
17
  sb.assert_element("img#captcha-success", timeout=3)
18
18
  sb.highlight("img#captcha-success", loops=8)
19
19
 
@@ -10,10 +10,8 @@ class UndetectedTest(BaseCase):
10
10
  url = "https://gitlab.com/users/sign_in"
11
11
  if not self.undetectable:
12
12
  self.get_new_driver(undetectable=True)
13
- self.driver.uc_open_with_reconnect(url, 3)
14
- if not self.is_text_visible("Username", '[for="user_login"]'):
15
- self.get_new_driver(undetectable=True)
16
- self.driver.uc_open_with_reconnect(url, 4)
13
+ self.uc_open_with_reconnect(url, 4)
14
+ self.uc_gui_click_captcha()
17
15
  self.assert_text("Username", '[for="user_login"]', timeout=3)
18
16
  self.post_message("SeleniumBase wasn't detected", duration=4)
19
17
  self._print("\n Success! Website did not detect Selenium! ")
@@ -182,9 +182,10 @@ class 我的测试类(硒测试用例):
182
182
  self.开启("https://zh.wikipedia.org/wiki/")
183
183
  self.断言标题("维基百科,自由的百科全书")
184
184
  self.断言元素('a[title="Wikipedia:关于"]')
185
+ self.如果可见请单击('button[aria-label="关闭"]')
186
+ self.如果可见请单击('button[aria-label="關閉"]')
185
187
  self.断言元素('span:contains("创建账号")')
186
188
  self.断言元素('span:contains("登录")')
187
- self.断言文本("新闻动态", "span#新闻动态")
188
189
  self.输入文本('input[name="search"]', "舞龍")
189
190
  self.单击('button:contains("搜索")')
190
191
  self.断言文本("舞龍", "#firstHeading")
@@ -1077,12 +1077,12 @@ driver.uc_gui_write(text) # Similar to uc_gui_press_keys(), but faster
1077
1077
  driver.uc_gui_click_x_y(x, y, timeframe=0.25) # PyAutoGUI click screen
1078
1078
 
1079
1079
  driver.uc_gui_click_captcha(frame="iframe", retry=False, blind=False)
1080
+ # driver.uc_gui_click_cf(frame="iframe", retry=False, blind=False)
1081
+ # driver.uc_gui_click_rc(frame="iframe", retry=False, blind=False)
1080
1082
 
1081
- driver.uc_gui_click_rc(frame="iframe", retry=False, blind=False) # reC
1082
-
1083
- driver.uc_gui_click_cf(frame="iframe", retry=False, blind=False) # CFT
1084
-
1085
- driver.uc_gui_handle_cf(frame="iframe") # PyAutoGUI click CF Turnstile
1083
+ driver.uc_gui_handle_captcha(frame="iframe") # (Auto-detects the CAPTCHA)
1084
+ # driver.uc_gui_handle_cf(frame="iframe") # PyAutoGUI click CF Turnstile
1085
+ # driver.uc_gui_handle_rc(frame="iframe") # PyAutoGUI click G. reCAPTCHA
1086
1086
 
1087
1087
  driver.uc_switch_to_frame(frame="iframe") # Stealthy switch_to_frame()
1088
1088
  ```
@@ -450,9 +450,10 @@ class 我的测试类(硒测试用例):
450
450
  self.开启("https://zh.wikipedia.org/wiki/")
451
451
  self.断言标题("维基百科,自由的百科全书")
452
452
  self.断言元素('a[title="Wikipedia:关于"]')
453
+ self.如果可见请单击('button[aria-label="关闭"]')
454
+ self.如果可见请单击('button[aria-label="關閉"]')
453
455
  self.断言元素('span:contains("创建账号")')
454
456
  self.断言元素('span:contains("登录")')
455
- self.断言文本("新闻动态", "span#新闻动态")
456
457
  self.输入文本('input[name="search"]', "舞龍")
457
458
  self.单击('button:contains("搜索")')
458
459
  self.断言文本("舞龍", "#firstHeading")
@@ -484,14 +485,14 @@ Testgeval.main(__name__, __file__)
484
485
  class MijnTestklasse(Testgeval):
485
486
  def test_voorbeeld_1(self):
486
487
  self.openen("https://nl.wikipedia.org/wiki/Hoofdpagina")
487
- self.controleren_element('a[title*="hoofdpagina gaan"]')
488
+ self.controleren_element('a[title*="Welkom voor nieuwkomers"]')
488
489
  self.controleren_tekst("Welkom op Wikipedia", "td.hp-welkom")
489
- self.typ("#searchInput", "Stroopwafel")
490
- self.klik("#searchButton")
490
+ self.typ("#searchform input", "Stroopwafel")
491
+ self.klik("#searchform button")
491
492
  self.controleren_tekst("Stroopwafel", "#firstHeading")
492
493
  self.controleren_element('img[src*="Stroopwafels"]')
493
- self.typ("#searchInput", "Rijksmuseum Amsterdam")
494
- self.klik("#searchButton")
494
+ self.typ("#searchform input", "Rijksmuseum Amsterdam")
495
+ self.klik("#searchform button")
495
496
  self.controleren_tekst("Rijksmuseum", "#firstHeading")
496
497
  self.controleren_element('img[src*="Rijksmuseum"]')
497
498
  self.terug()
@@ -517,6 +518,7 @@ class MaClasseDeTest(CasDeBase):
517
518
  self.ouvrir("https://fr.wikipedia.org/wiki/")
518
519
  self.vérifier_texte("Wikipédia")
519
520
  self.vérifier_élément('[alt="Wikipédia"]')
521
+ self.cliquer_si_affiché('button[aria-label="Fermer"]')
520
522
  self.js_taper("#searchform input", "Crème brûlée")
521
523
  self.cliquer("#searchform button")
522
524
  self.vérifier_texte("Crème brûlée", "#firstHeading")
@@ -674,7 +676,7 @@ class МойТестовыйКласс(ТестНаСелен):
674
676
  def test_пример_1(self):
675
677
  self.открыть("https://ru.wikipedia.org/wiki/")
676
678
  self.подтвердить_элемент('[title="Русский язык"]')
677
- self.подтвердить_текст("Википедия", "h2.main-wikimedia-header")
679
+ self.подтвердить_текст("Википедия", "div.main-wikimedia-header")
678
680
  self.введите("#searchInput", "МГУ")
679
681
  self.нажмите("#searchButton")
680
682
  self.подтвердить_текст("университет", "#firstHeading")
@@ -17,9 +17,10 @@ class 我的测试类(硒测试用例):
17
17
  self.开启("https://zh.wikipedia.org/wiki/")
18
18
  self.断言标题("维基百科,自由的百科全书")
19
19
  self.断言元素('a[title="Wikipedia:关于"]')
20
+ self.如果可见请单击('button[aria-label="关闭"]')
21
+ self.如果可见请单击('button[aria-label="關閉"]')
20
22
  self.断言元素('span:contains("创建账号")')
21
23
  self.断言元素('span:contains("登录")')
22
- self.断言文本("新闻动态", "span#新闻动态")
23
24
  self.输入文本('input[name="search"]', "舞龍")
24
25
  self.单击('button:contains("搜索")')
25
26
  self.断言文本("舞龍", "#firstHeading")
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bash
2
+ pip install -e . --use-pep517 --config-settings="editable_mode=compat"
@@ -2,7 +2,7 @@
2
2
  # Minimum Python version: 3.8 (for generating docs only)
3
3
 
4
4
  regex>=2024.7.24
5
- pymdown-extensions>=10.8.1
5
+ pymdown-extensions>=10.9
6
6
  pipdeptree>=2.23.1
7
7
  python-dateutil>=2.8.2
8
8
  Markdown==3.6
@@ -20,7 +20,7 @@ lxml==5.2.2
20
20
  pyquery==2.0.0
21
21
  readtime==3.0.0
22
22
  mkdocs==1.6.0
23
- mkdocs-material==9.5.30
23
+ mkdocs-material==9.5.31
24
24
  mkdocs-exclude-search==0.6.6
25
25
  mkdocs-simple-hooks==0.1.5
26
26
  mkdocs-material-extensions==1.3.1
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.29.3"
2
+ __version__ = "4.29.5"
@@ -394,9 +394,9 @@ def uc_special_open_if_cf(
394
394
  )
395
395
  uc_metrics = {}
396
396
  if (
397
- isinstance(device_width, int)
398
- and isinstance(device_height, int)
399
- and isinstance(device_pixel_ratio, int)
397
+ isinstance(device_width, (int, float))
398
+ and isinstance(device_height, (int, float))
399
+ and isinstance(device_pixel_ratio, (int, float))
400
400
  ):
401
401
  uc_metrics["width"] = device_width
402
402
  uc_metrics["height"] = device_height
@@ -835,6 +835,16 @@ def _uc_gui_click_captcha(
835
835
  '[data-callback="onCaptchaSuccess"]'
836
836
  ):
837
837
  frame = '[data-callback="onCaptchaSuccess"]'
838
+ elif (
839
+ (
840
+ driver.is_element_present('[name*="cf-turnstile-"]')
841
+ or driver.is_element_present('[id*="cf-turnstile-"]')
842
+ )
843
+ and driver.is_element_present(
844
+ 'div > div > [style*="margin"][style*="padding"]'
845
+ )
846
+ ):
847
+ frame = 'div > div > [style*="margin"][style*="padding"]'
838
848
  else:
839
849
  return
840
850
  if driver.is_element_present('form[class*=center]'):
@@ -965,9 +975,24 @@ def uc_gui_click_cf(driver, frame="iframe", retry=False, blind=False):
965
975
  )
966
976
 
967
977
 
968
- def uc_gui_handle_cf(driver, frame="iframe"):
969
- if not _on_a_cf_turnstile_page(driver):
970
- return
978
+ def _uc_gui_handle_captcha(
979
+ driver,
980
+ frame="iframe",
981
+ ctype=None,
982
+ ):
983
+ if ctype == "cf_t":
984
+ if not _on_a_cf_turnstile_page(driver):
985
+ return
986
+ elif ctype == "g_rc":
987
+ if not _on_a_g_recaptcha_page(driver):
988
+ return
989
+ else:
990
+ if _on_a_g_recaptcha_page(driver):
991
+ ctype = "g_rc"
992
+ elif _on_a_cf_turnstile_page(driver):
993
+ ctype = "cf_t"
994
+ else:
995
+ return
971
996
  install_pyautogui_if_missing(driver)
972
997
  import pyautogui
973
998
  pyautogui = get_configured_pyautogui(pyautogui)
@@ -978,7 +1003,10 @@ def uc_gui_handle_cf(driver, frame="iframe"):
978
1003
  with gui_lock: # Prevent issues with multiple processes
979
1004
  needs_switch = False
980
1005
  is_in_frame = js_utils.is_in_frame(driver)
981
- if is_in_frame and driver.is_element_present("#challenge-stage"):
1006
+ selector = "#challenge-stage"
1007
+ if ctype == "g_rc":
1008
+ selector = "#recaptcha-token"
1009
+ if is_in_frame and driver.is_element_present(selector):
982
1010
  driver.switch_to.parent_frame()
983
1011
  needs_switch = True
984
1012
  is_in_frame = js_utils.is_in_frame(driver)
@@ -987,48 +1015,78 @@ def uc_gui_handle_cf(driver, frame="iframe"):
987
1015
  page_actions.switch_to_window(
988
1016
  driver, driver.current_window_handle, 2, uc_lock=False
989
1017
  )
990
- if (
991
- driver.is_element_present(".cf-turnstile-wrapper iframe")
992
- or driver.is_element_present(
993
- '[data-callback="onCaptchaSuccess"] iframe'
994
- )
995
- ):
996
- pass
997
- else:
998
- visible_iframe = False
999
- if driver.is_element_present(".cf-turnstile-wrapper"):
1000
- frame = ".cf-turnstile-wrapper"
1001
- elif driver.is_element_present(
1002
- '[data-callback="onCaptchaSuccess"]'
1003
- ):
1004
- frame = '[data-callback="onCaptchaSuccess"]'
1005
- elif (
1006
- driver.is_element_present('[name*="cf-turnstile-"]')
1007
- and driver.is_element_present("div.spacer div[style]")
1018
+ if ctype == "cf_t":
1019
+ if (
1020
+ driver.is_element_present(".cf-turnstile-wrapper iframe")
1021
+ or driver.is_element_present(
1022
+ '[data-callback="onCaptchaSuccess"] iframe'
1023
+ )
1008
1024
  ):
1009
- frame = "div.spacer div[style]"
1025
+ pass
1010
1026
  else:
1011
- return
1027
+ visible_iframe = False
1028
+ if driver.is_element_present(".cf-turnstile-wrapper"):
1029
+ frame = ".cf-turnstile-wrapper"
1030
+ elif driver.is_element_present(
1031
+ '[data-callback="onCaptchaSuccess"]'
1032
+ ):
1033
+ frame = '[data-callback="onCaptchaSuccess"]'
1034
+ elif (
1035
+ driver.is_element_present('[name*="cf-turnstile-"]')
1036
+ and driver.is_element_present("div.spacer div[style]")
1037
+ ):
1038
+ frame = "div.spacer div[style]"
1039
+ elif (
1040
+ (
1041
+ driver.is_element_present('[name*="cf-turnstile-"]')
1042
+ or driver.is_element_present('[id*="cf-turnstile-"]')
1043
+ )
1044
+ and driver.is_element_present(
1045
+ 'form div div[style*="margin"][style*="padding"]'
1046
+ )
1047
+ ):
1048
+ frame = 'form div div[style*="margin"][style*="padding"]'
1049
+ elif (
1050
+ (
1051
+ driver.is_element_present('[name*="cf-turnstile-"]')
1052
+ or driver.is_element_present('[id*="cf-turnstile-"]')
1053
+ )
1054
+ and driver.is_element_present(
1055
+ 'div > div > [style*="margin"][style*="padding"]'
1056
+ )
1057
+ ):
1058
+ frame = 'div > div > [style*="margin"][style*="padding"]'
1059
+ else:
1060
+ return
1061
+ else:
1062
+ if (
1063
+ driver.is_element_present('iframe[title="reCAPTCHA"]')
1064
+ and frame == "iframe"
1065
+ ):
1066
+ frame = 'iframe[title="reCAPTCHA"]'
1012
1067
  if not is_in_frame or needs_switch:
1013
1068
  # Currently not in frame (or nested frame outside CF one)
1014
1069
  try:
1015
- if visible_iframe:
1070
+ if visible_iframe or ctype == "g_rc":
1016
1071
  driver.switch_to_frame(frame)
1017
1072
  except Exception:
1018
- if visible_iframe:
1073
+ if visible_iframe or ctype == "g_rc":
1019
1074
  if driver.is_element_present("iframe"):
1020
1075
  driver.switch_to_frame("iframe")
1021
1076
  else:
1022
1077
  return
1023
1078
  try:
1079
+ selector = "div.cf-turnstile"
1080
+ if ctype == "g_rc":
1081
+ selector = "span#recaptcha-anchor"
1024
1082
  found_checkbox = False
1025
1083
  for i in range(24):
1026
1084
  pyautogui.press("\t")
1027
1085
  time.sleep(0.02)
1028
1086
  active_element_css = js_utils.get_active_element_css(driver)
1029
1087
  if (
1030
- active_element_css.startswith("div.cf-turnstile")
1031
- or active_element_css.startswith("div#PYMIw2")
1088
+ active_element_css.startswith(selector)
1089
+ or active_element_css.endswith(" > div" * 2)
1032
1090
  ):
1033
1091
  found_checkbox = True
1034
1092
  break
@@ -1051,6 +1109,18 @@ def uc_gui_handle_cf(driver, frame="iframe"):
1051
1109
  driver.reconnect(reconnect_time)
1052
1110
 
1053
1111
 
1112
+ def uc_gui_handle_captcha(driver, frame="iframe"):
1113
+ _uc_gui_handle_captcha(driver, frame=frame, ctype=None)
1114
+
1115
+
1116
+ def uc_gui_handle_cf(driver, frame="iframe"):
1117
+ _uc_gui_handle_captcha(driver, frame=frame, ctype="cf_t")
1118
+
1119
+
1120
+ def uc_gui_handle_rc(driver, frame="iframe"):
1121
+ _uc_gui_handle_captcha(driver, frame=frame, ctype="g_rc")
1122
+
1123
+
1054
1124
  def uc_switch_to_frame(driver, frame="iframe", reconnect_time=None):
1055
1125
  from selenium.webdriver.remote.webelement import WebElement
1056
1126
  if isinstance(frame, WebElement):
@@ -1449,9 +1519,9 @@ def _set_chrome_options(
1449
1519
  emulator_settings = {}
1450
1520
  device_metrics = {}
1451
1521
  if (
1452
- isinstance(device_width, int)
1453
- and isinstance(device_height, int)
1454
- and isinstance(device_pixel_ratio, int)
1522
+ isinstance(device_width, (int, float))
1523
+ and isinstance(device_height, (int, float))
1524
+ and isinstance(device_pixel_ratio, (int, float))
1455
1525
  ):
1456
1526
  device_metrics["width"] = device_width
1457
1527
  device_metrics["height"] = device_height
@@ -3199,9 +3269,9 @@ def get_local_driver(
3199
3269
  emulator_settings = {}
3200
3270
  device_metrics = {}
3201
3271
  if (
3202
- isinstance(device_width, int)
3203
- and isinstance(device_height, int)
3204
- and isinstance(device_pixel_ratio, int)
3272
+ isinstance(device_width, (int, float))
3273
+ and isinstance(device_height, (int, float))
3274
+ and isinstance(device_pixel_ratio, (int, float))
3205
3275
  ):
3206
3276
  device_metrics["width"] = device_width
3207
3277
  device_metrics["height"] = device_height
@@ -4391,13 +4461,18 @@ def get_local_driver(
4391
4461
  driver, *args, **kwargs
4392
4462
  )
4393
4463
  )
4464
+ driver.uc_gui_click_cf = (
4465
+ lambda *args, **kwargs: uc_gui_click_cf(
4466
+ driver, *args, **kwargs
4467
+ )
4468
+ )
4394
4469
  driver.uc_gui_click_rc = (
4395
4470
  lambda *args, **kwargs: uc_gui_click_rc(
4396
4471
  driver, *args, **kwargs
4397
4472
  )
4398
4473
  )
4399
- driver.uc_gui_click_cf = (
4400
- lambda *args, **kwargs: uc_gui_click_cf(
4474
+ driver.uc_gui_handle_captcha = (
4475
+ lambda *args, **kwargs: uc_gui_handle_captcha(
4401
4476
  driver, *args, **kwargs
4402
4477
  )
4403
4478
  )
@@ -4406,6 +4481,11 @@ def get_local_driver(
4406
4481
  driver, *args, **kwargs
4407
4482
  )
4408
4483
  )
4484
+ driver.uc_gui_handle_rc = (
4485
+ lambda *args, **kwargs: uc_gui_handle_rc(
4486
+ driver, *args, **kwargs
4487
+ )
4488
+ )
4409
4489
  driver.uc_switch_to_frame = (
4410
4490
  lambda *args, **kwargs: uc_switch_to_frame(
4411
4491
  driver, *args, **kwargs
@@ -4416,9 +4496,9 @@ def get_local_driver(
4416
4496
  if mobile_emulator:
4417
4497
  uc_metrics = {}
4418
4498
  if (
4419
- isinstance(device_width, int)
4420
- and isinstance(device_height, int)
4421
- and isinstance(device_pixel_ratio, int)
4499
+ isinstance(device_width, (int, float))
4500
+ and isinstance(device_height, (int, float))
4501
+ and isinstance(device_pixel_ratio, (int, float))
4422
4502
  ):
4423
4503
  uc_metrics["width"] = device_width
4424
4504
  uc_metrics["height"] = device_height
@@ -4246,12 +4246,16 @@ class BaseCase(unittest.TestCase):
4246
4246
  self.uc_gui_click_x_y = new_driver.uc_gui_click_x_y
4247
4247
  if hasattr(new_driver, "uc_gui_click_captcha"):
4248
4248
  self.uc_gui_click_captcha = new_driver.uc_gui_click_captcha
4249
- if hasattr(new_driver, "uc_gui_click_rc"):
4250
- self.uc_gui_click_rc = new_driver.uc_gui_click_rc
4251
4249
  if hasattr(new_driver, "uc_gui_click_cf"):
4252
4250
  self.uc_gui_click_cf = new_driver.uc_gui_click_cf
4251
+ if hasattr(new_driver, "uc_gui_click_rc"):
4252
+ self.uc_gui_click_rc = new_driver.uc_gui_click_rc
4253
+ if hasattr(new_driver, "uc_gui_handle_captcha"):
4254
+ self.uc_gui_handle_captcha = new_driver.uc_gui_handle_captcha
4253
4255
  if hasattr(new_driver, "uc_gui_handle_cf"):
4254
4256
  self.uc_gui_handle_cf = new_driver.uc_gui_handle_cf
4257
+ if hasattr(new_driver, "uc_gui_handle_rc"):
4258
+ self.uc_gui_handle_rc = new_driver.uc_gui_handle_rc
4255
4259
  if hasattr(new_driver, "uc_switch_to_frame"):
4256
4260
  self.uc_switch_to_frame = new_driver.uc_switch_to_frame
4257
4261
  return new_driver
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.29.3
3
+ Version: 4.29.5
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
@@ -147,7 +147,7 @@ setup(
147
147
  python_requires=">=3.7",
148
148
  install_requires=[
149
149
  'pip>=24.0;python_version<"3.8"',
150
- 'pip>=24.1.2;python_version>="3.8"',
150
+ 'pip>=24.1.2;python_version>="3.8"', # 24.2: editable install warnings
151
151
  'packaging>=24.0;python_version<"3.8"',
152
152
  'packaging>=24.1;python_version>="3.8"',
153
153
  'setuptools>=68.0.0;python_version<"3.8"',
@@ -0,0 +1,2 @@
1
+ @ECHO OFF
2
+ pip install -e . --use-pep517 --config-settings="editable_mode=compat"
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- python -m pip install --upgrade pip
3
- pip install -e . --upgrade --no-cache-dir --progress-bar=off
4
- seleniumbase install chromedriver
5
- seleniumbase install geckodriver
6
- seleniumbase install edgedriver
@@ -1,6 +0,0 @@
1
- @ECHO OFF
2
- py -m pip install --upgrade pip
3
- pip install -e . --upgrade --no-cache-dir --progress-bar=off
4
- seleniumbase install chromedriver
5
- seleniumbase install geckodriver
6
- seleniumbase install edgedriver
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes