seleniumbase 4.29.4__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 (516) hide show
  1. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/Dockerfile +20 -8
  2. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/PKG-INFO +1 -1
  3. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/ReadMe.md +2 -1
  4. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/chinese_test_1.py +2 -1
  5. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/french_test_1.py +1 -0
  6. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/uc_cdp_events.py +1 -1
  7. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/verify_undetected.py +2 -4
  8. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/chinese.md +2 -1
  9. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/method_summary.md +5 -5
  10. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/syntax_formats.md +9 -7
  11. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/translations.md +2 -1
  12. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/requirements.txt +1 -1
  13. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/__version__.py +1 -1
  14. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/browser_launcher.py +109 -59
  15. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/base_case.py +6 -2
  16. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/PKG-INFO +1 -1
  17. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/Workflows.md +0 -0
  18. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/workflows/pages.yml +0 -0
  19. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/workflows/python-nightly-mac.yml +0 -0
  20. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  21. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/workflows/python-nightly-windows.yml +0 -0
  22. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.github/workflows/python-package.yml +0 -0
  23. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/.gitignore +0 -0
  24. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/CHANGELOG.md +0 -0
  25. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/CNAME +0 -0
  26. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/CODE_OF_CONDUCT.md +0 -0
  27. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/CONTRIBUTING.md +0 -0
  28. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/LICENSE +0 -0
  29. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/MANIFEST.in +0 -0
  30. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/README.md +0 -0
  31. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/SECURITY.md +0 -0
  32. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/_config.yml +0 -0
  33. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/azure-pipelines.yml +0 -0
  34. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/ReadMe.md +0 -0
  35. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/__init__.py +0 -0
  36. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/basic_test.py +0 -0
  37. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/ReadMe.md +0 -0
  38. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/__init__.py +0 -0
  39. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/behave.ini +0 -0
  40. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/__init__.py +0 -0
  41. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/behave.ini +0 -0
  42. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/calculator.feature +0 -0
  43. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/environment.py +0 -0
  44. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/fail_page.feature +0 -0
  45. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/realworld.feature +0 -0
  46. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/__init__.py +0 -0
  47. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/calculator.py +0 -0
  48. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  49. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/imported.py +0 -0
  50. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  51. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/behave_bdd/features/swag_labs.feature +0 -0
  52. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/ReadMe.md +0 -0
  53. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/__init__.py +0 -0
  54. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/base_test_case.py +0 -0
  55. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/boilerplate_test.py +0 -0
  56. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/classic_obj_test.py +0 -0
  57. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/page_objects.py +0 -0
  58. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/__init__.py +0 -0
  59. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  60. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  61. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  62. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  63. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/google_objects.py +0 -0
  64. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/google_test.py +0 -0
  65. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  66. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  67. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/samples/test_page_objects.py +0 -0
  68. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/boilerplates/sb_fixture_test.py +0 -0
  69. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/ReadMe.md +0 -0
  70. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/mac_cap_file.py +0 -0
  71. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/sample_cap_file_BS.py +0 -0
  72. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/sample_cap_file_SL.py +0 -0
  73. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/selenoid_cap_file.py +0 -0
  74. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/capabilities/win10_cap_file.py +0 -0
  75. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  76. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  77. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  78. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  79. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  80. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  81. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  82. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  83. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/case_summary.md +0 -0
  84. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/ReadMe.md +0 -0
  85. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/chart_presentation.py +0 -0
  86. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/my_chart.py +0 -0
  87. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/pie_charts.py +0 -0
  88. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/test_area_chart.py +0 -0
  89. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/test_display_chart.py +0 -0
  90. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/test_line_chart.py +0 -0
  91. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/test_multi_series.py +0 -0
  92. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/chart_maker/test_save_chart.py +0 -0
  93. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/coffee_cart_tests.py +0 -0
  94. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/custom_settings.py +0 -0
  95. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/desktop_apps/ReadMe.md +0 -0
  96. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/desktop_apps/recorder.py +0 -0
  97. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/dialog_boxes/ReadMe.md +0 -0
  98. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/dialog_boxes/dialog_box_tour.py +0 -0
  99. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/edge_test.py +0 -0
  100. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/example_config.cfg +0 -0
  101. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/example_logs/ReadMe.md +0 -0
  102. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/example_logs/basic_test_info.txt +0 -0
  103. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/example_logs/page_source.html +0 -0
  104. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/example_logs/screenshot.png +0 -0
  105. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/github_test.py +0 -0
  106. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/gui_test_runner.py +0 -0
  107. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/hack_the_planet.py +0 -0
  108. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/handle_alert_test.py +0 -0
  109. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/iframe_tests.py +0 -0
  110. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/locale_code_test.py +0 -0
  111. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/master_qa/ReadMe.md +0 -0
  112. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/master_qa/__init__.py +0 -0
  113. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  114. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/master_qa/masterqa_test_1.py +0 -0
  115. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/master_qa/pytest.ini +0 -0
  116. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/__init__.py +0 -0
  117. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/ReadMe.md +0 -0
  118. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/__init__.py +0 -0
  119. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/example_spec.js +0 -0
  120. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/example_test.py +0 -0
  121. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/input_spec.js +0 -0
  122. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/input_test.py +0 -0
  123. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  124. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/protractor/mat_paginator_test.py +0 -0
  125. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/ReadMe.md +0 -0
  126. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/__init__.py +0 -0
  127. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  128. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  129. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/messy_raw.py +0 -0
  130. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/pytest.ini +0 -0
  131. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/refined_raw.py +0 -0
  132. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  133. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/my_first_test.py +0 -0
  134. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/nth_child_test.py +0 -0
  135. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/__init__.py +0 -0
  136. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/demo_page.html +0 -0
  137. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/load_html_test.py +0 -0
  138. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/test_demo_page.py +0 -0
  139. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/test_handle_alerts.py +0 -0
  140. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/test_request_fixture.py +0 -0
  141. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/offline_examples/test_user_agent.py +0 -0
  142. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/old_wordle_script.py +0 -0
  143. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/parameterized_test.py +0 -0
  144. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/performance_test.py +0 -0
  145. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/ReadMe.md +0 -0
  146. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/core_presentation.py +0 -0
  147. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/edge_presentation.py +0 -0
  148. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/fundamentals.py +0 -0
  149. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/my_presentation.py +0 -0
  150. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/presenter/py_virtual_envs.py +0 -0
  151. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/proxy_test.py +0 -0
  152. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/pytest.ini +0 -0
  153. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/rate_limiting_test.py +0 -0
  154. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_call.py +0 -0
  155. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_driver_context.py +0 -0
  156. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_file_call.py +0 -0
  157. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_main_call.py +0 -0
  158. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_parameter_script.py +0 -0
  159. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_sb.py +0 -0
  160. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_test_scripts.py +0 -0
  161. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/raw_uc_mode.py +0 -0
  162. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/setup.cfg +0 -0
  163. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/shadow_root_test.py +0 -0
  164. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/swag_labs_user_tests.py +0 -0
  165. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_apple_site.py +0 -0
  166. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_assert_elements.py +0 -0
  167. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_calculator.py +0 -0
  168. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_canvas.py +0 -0
  169. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_checkboxes.py +0 -0
  170. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_chinese_pdf.py +0 -0
  171. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_chromedriver.py +0 -0
  172. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_coffee_cart.py +0 -0
  173. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_console_logging.py +0 -0
  174. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_contains_selector.py +0 -0
  175. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_cycle_elements.py +0 -0
  176. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_decryption.py +0 -0
  177. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_deferred_asserts.py +0 -0
  178. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_demo_site.py +0 -0
  179. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_detect_404s.py +0 -0
  180. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_docs_site.py +0 -0
  181. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_double_click.py +0 -0
  182. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_download_files.py +0 -0
  183. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_download_images.py +0 -0
  184. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_drag_and_drop.py +0 -0
  185. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_error_page.py +0 -0
  186. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_event_firing.py +0 -0
  187. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_fail.py +0 -0
  188. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_geolocation.py +0 -0
  189. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_get_coffee.py +0 -0
  190. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_get_locale_code.py +0 -0
  191. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_get_pdf_text.py +0 -0
  192. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_get_user_agent.py +0 -0
  193. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_hack_search.py +0 -0
  194. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_image_saving.py +0 -0
  195. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_inspect_html.py +0 -0
  196. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_login.py +0 -0
  197. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_markers.py +0 -0
  198. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_mfa_login.py +0 -0
  199. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_multiple_drivers.py +0 -0
  200. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_null.py +0 -0
  201. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_override_driver.py +0 -0
  202. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_override_sb_fixture.py +0 -0
  203. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_parse_soup.py +0 -0
  204. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_pdf_asserts.py +0 -0
  205. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_pytest_parametrize.py +0 -0
  206. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_repeat_tests.py +0 -0
  207. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_request_sb_fixture.py +0 -0
  208. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_save_screenshots.py +0 -0
  209. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_sb_fixture.py +0 -0
  210. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_scrape_bing.py +0 -0
  211. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_select_options.py +0 -0
  212. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_shadow_dom.py +0 -0
  213. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_show_file_choosers.py +0 -0
  214. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_skype_site.py +0 -0
  215. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_suite.py +0 -0
  216. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_swag_labs.py +0 -0
  217. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_tinymce.py +0 -0
  218. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_todomvc.py +0 -0
  219. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_url_asserts.py +0 -0
  220. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_usefixtures.py +0 -0
  221. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_verify_chromedriver.py +0 -0
  222. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_window_switching.py +0 -0
  223. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_xfail.py +0 -0
  224. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/test_xkcd.py +0 -0
  225. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/time_limit_test.py +0 -0
  226. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/ReadMe.md +0 -0
  227. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  228. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  229. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  230. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/google_tour.py +0 -0
  231. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  232. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/introjs_google_tour.py +0 -0
  233. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/maps_introjs_tour.py +0 -0
  234. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/octocat_tour.py +0 -0
  235. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/shepherd_google_tour.py +0 -0
  236. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/tour_examples/xkcd_tour.py +0 -0
  237. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/dutch_test_1.py +0 -0
  238. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/english_test_1.py +0 -0
  239. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/italian_test_1.py +0 -0
  240. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/japanese_test_1.py +0 -0
  241. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/korean_test_1.py +0 -0
  242. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/portuguese_test_1.py +0 -0
  243. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/pytest.ini +0 -0
  244. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/russian_test_1.py +0 -0
  245. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/translations/spanish_test_1.py +0 -0
  246. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/unit_tests/ReadMe.md +0 -0
  247. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/unit_tests/verify_framework.py +0 -0
  248. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/upgrade_chromedriver.py +0 -0
  249. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/upload_file_test.py +0 -0
  250. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/user_agent_test.py +0 -0
  251. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/ReadMe.md +0 -0
  252. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/__init__.py +0 -0
  253. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  254. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  255. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  256. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  257. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  258. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  259. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/layout_test.py +0 -0
  260. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/python_home_test.py +0 -0
  261. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/test_layout_fail.py +0 -0
  262. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/visual_testing/xkcd_visual_test.py +0 -0
  263. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/wordle_test.py +0 -0
  264. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/xpath_test.py +0 -0
  265. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/examples/youtube_search_test.py +0 -0
  266. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/ReadMe.md +0 -0
  267. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/behave_gui.md +0 -0
  268. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/case_plans.md +0 -0
  269. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/commander.md +0 -0
  270. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/customizing_test_runs.md +0 -0
  271. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/demo_mode.md +0 -0
  272. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/desired_capabilities.md +0 -0
  273. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/features_list.md +0 -0
  274. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/handling_iframes.md +0 -0
  275. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/happy_customers.md +0 -0
  276. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/hidden_files_info.md +0 -0
  277. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/how_it_works.md +0 -0
  278. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/html_inspector.md +0 -0
  279. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/install.md +0 -0
  280. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/install_python_pip_git.md +0 -0
  281. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/js_package_manager.md +0 -0
  282. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/locale_codes.md +0 -0
  283. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/mobile_testing.md +0 -0
  284. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/mysql_installation.md +0 -0
  285. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/recorder_mode.md +0 -0
  286. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/shadow_dom.md +0 -0
  287. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/thank_you.md +0 -0
  288. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/useful_grep_commands.md +0 -0
  289. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/using_safari_driver.md +0 -0
  290. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/verify_webdriver.md +0 -0
  291. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/virtualenv_instructions.md +0 -0
  292. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/help_docs/webdriver_installation.md +0 -0
  293. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/install.sh +0 -0
  294. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/__init__.py +0 -0
  295. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  296. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/azure/jenkins/ReadMe.md +0 -0
  297. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/ReadMe.md +0 -0
  298. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/behave.ini +0 -0
  299. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/__init__.py +0 -0
  300. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/behave.ini +0 -0
  301. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/calculator.feature +0 -0
  302. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/environment.py +0 -0
  303. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/fail_page.feature +0 -0
  304. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/realworld.feature +0 -0
  305. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/steps/__init__.py +0 -0
  306. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/steps/calculator.py +0 -0
  307. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/steps/fail_page.py +0 -0
  308. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/steps/real_world.py +0 -0
  309. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/steps/swag_labs.py +0 -0
  310. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/behave/features/swag_labs.feature +0 -0
  311. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/brython/ReadMe.md +0 -0
  312. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/brython/index.html +0 -0
  313. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/brython/index.py +0 -0
  314. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/brython/library.html +0 -0
  315. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/docker/ReadMe.md +0 -0
  316. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/docker/docker-entrypoint.sh +0 -0
  317. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  318. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/github/ReadMe.md +0 -0
  319. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/github/workflows/ReadMe.md +0 -0
  320. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/github/workflows/extras.md +0 -0
  321. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/google_cloud/ReadMe.md +0 -0
  322. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/katalon/ReadMe.md +0 -0
  323. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/linux/Linuxfile.sh +0 -0
  324. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/linux/ReadMe.md +0 -0
  325. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/linux/Xvfb_launcher.sh +0 -0
  326. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/linux/jenkins_permissions.sh +0 -0
  327. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/linux/tomcat_permissions.sh +0 -0
  328. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/ReadMe.md +0 -0
  329. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/__init__.py +0 -0
  330. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/index.html +0 -0
  331. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/my_first_test.py +0 -0
  332. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/npm-shrinkwrap.json +0 -0
  333. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/package.json +0 -0
  334. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/server.js +0 -0
  335. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/node_js/test_demo_site.py +0 -0
  336. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/selenium_grid/ReadMe.md +0 -0
  337. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/integrations/selenium_ide/ReadMe.md +0 -0
  338. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs.yml +0 -0
  339. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/ReadMe.txt +0 -0
  340. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/docs_instructions.txt +0 -0
  341. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie.png +0 -0
  342. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie_2.png +0 -0
  343. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/dash_pie_3.png +0 -0
  344. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/favicon.ico +0 -0
  345. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/grad_logo.png +0 -0
  346. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/green_icon.png +0 -0
  347. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo.png +0 -0
  348. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo2.png +0 -0
  349. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/green_logo3.png +0 -0
  350. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo3.png +0 -0
  351. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo3a.png +0 -0
  352. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo3b.png +0 -0
  353. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo3c.png +0 -0
  354. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo4.png +0 -0
  355. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo5.png +0 -0
  356. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo6.png +0 -0
  357. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/logo7.png +0 -0
  358. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/sb_icon.png +0 -0
  359. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/sb_logo_10.png +0 -0
  360. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/sb_logo_7.png +0 -0
  361. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/side_by_side.png +0 -0
  362. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_facebook.svg +0 -0
  363. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_github.svg +0 -0
  364. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_gitter.svg +0 -0
  365. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_instagram.svg +0 -0
  366. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/img/social/share_twitter.svg +0 -0
  367. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/index.txt +0 -0
  368. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/mkdocs_build/prepare.py +0 -0
  369. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/pytest.ini +0 -0
  370. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/requirements.txt +0 -0
  371. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/sbase/ReadMe.txt +0 -0
  372. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/sbase/__init__.py +0 -0
  373. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/sbase/__main__.py +0 -0
  374. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/sbase/steps.py +0 -0
  375. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/ReadMe.md +0 -0
  376. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/__init__.py +0 -0
  377. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/__main__.py +0 -0
  378. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/behave/__init__.py +0 -0
  379. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/behave/behave_helper.py +0 -0
  380. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/behave/behave_sb.py +0 -0
  381. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/behave/steps.py +0 -0
  382. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/ReadMe.md +0 -0
  383. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/__init__.py +0 -0
  384. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/decorators.py +0 -0
  385. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/encryption.py +0 -0
  386. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/exceptions.py +0 -0
  387. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/obfuscate.py +0 -0
  388. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/common/unobfuscate.py +0 -0
  389. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/config/__init__.py +0 -0
  390. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/config/ad_block_list.py +0 -0
  391. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/config/proxy_list.py +0 -0
  392. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/config/settings.py +0 -0
  393. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/ReadMe.md +0 -0
  394. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/__init__.py +0 -0
  395. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/logo_helper.py +0 -0
  396. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/rich_helper.py +0 -0
  397. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/run.py +0 -0
  398. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  399. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  400. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_commander.py +0 -0
  401. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_install.py +0 -0
  402. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  403. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  404. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  405. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  406. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  407. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  408. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_print.py +0 -0
  409. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  410. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/__init__.py +0 -0
  411. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/application_manager.py +0 -0
  412. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/capabilities_parser.py +0 -0
  413. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/colored_traceback.py +0 -0
  414. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/create_db_tables.sql +0 -0
  415. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/detect_b_ver.py +0 -0
  416. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/download_helper.py +0 -0
  417. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/encoded_images.py +0 -0
  418. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/jqc_helper.py +0 -0
  419. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/log_helper.py +0 -0
  420. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/mysql.py +0 -0
  421. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/proxy_helper.py +0 -0
  422. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/recorder_helper.py +0 -0
  423. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/report_helper.py +0 -0
  424. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/s3_manager.py +0 -0
  425. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/sb_driver.py +0 -0
  426. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/session_helper.py +0 -0
  427. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/settings_parser.py +0 -0
  428. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/style_sheet.py +0 -0
  429. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/testcase_manager.py +0 -0
  430. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/tour_helper.py +0 -0
  431. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/core/visual_helper.py +0 -0
  432. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/drivers/ReadMe.md +0 -0
  433. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/drivers/__init__.py +0 -0
  434. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/ReadMe.md +0 -0
  435. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/__init__.py +0 -0
  436. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/ad_block.zip +0 -0
  437. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/disable_csp.zip +0 -0
  438. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/recorder.zip +0 -0
  439. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/extensions/sbase_ext.zip +0 -0
  440. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/__init__.py +0 -0
  441. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/constants.py +0 -0
  442. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  443. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/errors.py +0 -0
  444. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/js_utils.py +0 -0
  445. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/page_actions.py +0 -0
  446. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/page_utils.py +0 -0
  447. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/shared_utils.py +0 -0
  448. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/unittest_helper.py +0 -0
  449. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/words.py +0 -0
  450. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  451. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/js_code/__init__.py +0 -0
  452. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/js_code/active_css_js.py +0 -0
  453. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/js_code/live_js.py +0 -0
  454. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/js_code/recorder_js.py +0 -0
  455. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/masterqa/ReadMe.md +0 -0
  456. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/masterqa/__init__.py +0 -0
  457. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/masterqa/master_qa.py +0 -0
  458. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/__init__.py +0 -0
  459. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/base_plugin.py +0 -0
  460. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/basic_test_info.py +0 -0
  461. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  462. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/driver_manager.py +0 -0
  463. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/page_source.py +0 -0
  464. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/pytest_plugin.py +0 -0
  465. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  466. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/sb_manager.py +0 -0
  467. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/screen_shots.py +0 -0
  468. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/plugins/selenium_plugin.py +0 -0
  469. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/resources/ReadMe.md +0 -0
  470. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/resources/__init__.py +0 -0
  471. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/resources/favicon.ico +0 -0
  472. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/__init__.py +0 -0
  473. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/chinese.py +0 -0
  474. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/dutch.py +0 -0
  475. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/french.py +0 -0
  476. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/italian.py +0 -0
  477. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/japanese.py +0 -0
  478. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/korean.py +0 -0
  479. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/master_dict.py +0 -0
  480. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/portuguese.py +0 -0
  481. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/russian.py +0 -0
  482. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/spanish.py +0 -0
  483. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/translate/translator.py +0 -0
  484. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/__init__.py +0 -0
  485. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/cdp.py +0 -0
  486. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/dprocess.py +0 -0
  487. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/options.py +0 -0
  488. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/patcher.py +0 -0
  489. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/reactor.py +0 -0
  490. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/undetected/webelement.py +0 -0
  491. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/__init__.py +0 -0
  492. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  493. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  494. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  495. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  496. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  497. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  498. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  499. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  500. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  501. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  502. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  503. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  504. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  505. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  506. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  507. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/SOURCES.txt +0 -0
  508. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/dependency_links.txt +0 -0
  509. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/entry_points.txt +0 -0
  510. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/requires.txt +0 -0
  511. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/seleniumbase.egg-info/top_level.txt +0 -0
  512. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/setup.cfg +0 -0
  513. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/setup.py +0 -0
  514. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/virtualenv_install.sh +0 -0
  515. {seleniumbase-4.29.4 → seleniumbase-4.29.5}/win_install.bat +0 -0
  516. {seleniumbase-4.29.4 → 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.4
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")
@@ -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.4"
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
@@ -975,9 +975,24 @@ def uc_gui_click_cf(driver, frame="iframe", retry=False, blind=False):
975
975
  )
976
976
 
977
977
 
978
- def uc_gui_handle_cf(driver, frame="iframe"):
979
- if not _on_a_cf_turnstile_page(driver):
980
- 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
981
996
  install_pyautogui_if_missing(driver)
982
997
  import pyautogui
983
998
  pyautogui = get_configured_pyautogui(pyautogui)
@@ -988,7 +1003,10 @@ def uc_gui_handle_cf(driver, frame="iframe"):
988
1003
  with gui_lock: # Prevent issues with multiple processes
989
1004
  needs_switch = False
990
1005
  is_in_frame = js_utils.is_in_frame(driver)
991
- 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):
992
1010
  driver.switch_to.parent_frame()
993
1011
  needs_switch = True
994
1012
  is_in_frame = js_utils.is_in_frame(driver)
@@ -997,67 +1015,77 @@ def uc_gui_handle_cf(driver, frame="iframe"):
997
1015
  page_actions.switch_to_window(
998
1016
  driver, driver.current_window_handle, 2, uc_lock=False
999
1017
  )
1000
- if (
1001
- driver.is_element_present(".cf-turnstile-wrapper iframe")
1002
- or driver.is_element_present(
1003
- '[data-callback="onCaptchaSuccess"] iframe'
1004
- )
1005
- ):
1006
- pass
1007
- else:
1008
- visible_iframe = False
1009
- if driver.is_element_present(".cf-turnstile-wrapper"):
1010
- frame = ".cf-turnstile-wrapper"
1011
- elif driver.is_element_present(
1012
- '[data-callback="onCaptchaSuccess"]'
1013
- ):
1014
- frame = '[data-callback="onCaptchaSuccess"]'
1015
- elif (
1016
- driver.is_element_present('[name*="cf-turnstile-"]')
1017
- and driver.is_element_present("div.spacer div[style]")
1018
- ):
1019
- frame = "div.spacer div[style]"
1020
- elif (
1021
- (
1022
- driver.is_element_present('[name*="cf-turnstile-"]')
1023
- or driver.is_element_present('[id*="cf-turnstile-"]')
1024
- )
1025
- and driver.is_element_present(
1026
- 'form div div[style*="margin"][style*="padding"]'
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'
1027
1023
  )
1028
1024
  ):
1029
- frame = 'form div div[style*="margin"][style*="padding"]'
1030
- elif (
1031
- (
1025
+ pass
1026
+ else:
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 (
1032
1035
  driver.is_element_present('[name*="cf-turnstile-"]')
1033
- or driver.is_element_present('[id*="cf-turnstile-"]')
1034
- )
1035
- and driver.is_element_present(
1036
- 'div > div > [style*="margin"][style*="padding"]'
1037
- )
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"
1038
1065
  ):
1039
- frame = 'div > div > [style*="margin"][style*="padding"]'
1040
- else:
1041
- return
1066
+ frame = 'iframe[title="reCAPTCHA"]'
1042
1067
  if not is_in_frame or needs_switch:
1043
1068
  # Currently not in frame (or nested frame outside CF one)
1044
1069
  try:
1045
- if visible_iframe:
1070
+ if visible_iframe or ctype == "g_rc":
1046
1071
  driver.switch_to_frame(frame)
1047
1072
  except Exception:
1048
- if visible_iframe:
1073
+ if visible_iframe or ctype == "g_rc":
1049
1074
  if driver.is_element_present("iframe"):
1050
1075
  driver.switch_to_frame("iframe")
1051
1076
  else:
1052
1077
  return
1053
1078
  try:
1079
+ selector = "div.cf-turnstile"
1080
+ if ctype == "g_rc":
1081
+ selector = "span#recaptcha-anchor"
1054
1082
  found_checkbox = False
1055
1083
  for i in range(24):
1056
1084
  pyautogui.press("\t")
1057
1085
  time.sleep(0.02)
1058
1086
  active_element_css = js_utils.get_active_element_css(driver)
1059
1087
  if (
1060
- active_element_css.startswith("div.cf-turnstile")
1088
+ active_element_css.startswith(selector)
1061
1089
  or active_element_css.endswith(" > div" * 2)
1062
1090
  ):
1063
1091
  found_checkbox = True
@@ -1081,6 +1109,18 @@ def uc_gui_handle_cf(driver, frame="iframe"):
1081
1109
  driver.reconnect(reconnect_time)
1082
1110
 
1083
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
+
1084
1124
  def uc_switch_to_frame(driver, frame="iframe", reconnect_time=None):
1085
1125
  from selenium.webdriver.remote.webelement import WebElement
1086
1126
  if isinstance(frame, WebElement):
@@ -1479,9 +1519,9 @@ def _set_chrome_options(
1479
1519
  emulator_settings = {}
1480
1520
  device_metrics = {}
1481
1521
  if (
1482
- isinstance(device_width, int)
1483
- and isinstance(device_height, int)
1484
- 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))
1485
1525
  ):
1486
1526
  device_metrics["width"] = device_width
1487
1527
  device_metrics["height"] = device_height
@@ -3229,9 +3269,9 @@ def get_local_driver(
3229
3269
  emulator_settings = {}
3230
3270
  device_metrics = {}
3231
3271
  if (
3232
- isinstance(device_width, int)
3233
- and isinstance(device_height, int)
3234
- 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))
3235
3275
  ):
3236
3276
  device_metrics["width"] = device_width
3237
3277
  device_metrics["height"] = device_height
@@ -4421,13 +4461,18 @@ def get_local_driver(
4421
4461
  driver, *args, **kwargs
4422
4462
  )
4423
4463
  )
4464
+ driver.uc_gui_click_cf = (
4465
+ lambda *args, **kwargs: uc_gui_click_cf(
4466
+ driver, *args, **kwargs
4467
+ )
4468
+ )
4424
4469
  driver.uc_gui_click_rc = (
4425
4470
  lambda *args, **kwargs: uc_gui_click_rc(
4426
4471
  driver, *args, **kwargs
4427
4472
  )
4428
4473
  )
4429
- driver.uc_gui_click_cf = (
4430
- lambda *args, **kwargs: uc_gui_click_cf(
4474
+ driver.uc_gui_handle_captcha = (
4475
+ lambda *args, **kwargs: uc_gui_handle_captcha(
4431
4476
  driver, *args, **kwargs
4432
4477
  )
4433
4478
  )
@@ -4436,6 +4481,11 @@ def get_local_driver(
4436
4481
  driver, *args, **kwargs
4437
4482
  )
4438
4483
  )
4484
+ driver.uc_gui_handle_rc = (
4485
+ lambda *args, **kwargs: uc_gui_handle_rc(
4486
+ driver, *args, **kwargs
4487
+ )
4488
+ )
4439
4489
  driver.uc_switch_to_frame = (
4440
4490
  lambda *args, **kwargs: uc_switch_to_frame(
4441
4491
  driver, *args, **kwargs
@@ -4446,9 +4496,9 @@ def get_local_driver(
4446
4496
  if mobile_emulator:
4447
4497
  uc_metrics = {}
4448
4498
  if (
4449
- isinstance(device_width, int)
4450
- and isinstance(device_height, int)
4451
- 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))
4452
4502
  ):
4453
4503
  uc_metrics["width"] = device_width
4454
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.4
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes