seleniumbase 4.15.13__tar.gz → 4.15.15__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.15.13 → seleniumbase-4.15.15}/PKG-INFO +23 -24
  2. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/README.md +22 -23
  3. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/dialog_boxes/dialog_box_tour.py +1 -0
  4. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/japanese_test_1.py +1 -1
  5. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/korean_test_1.py +1 -1
  6. seleniumbase-4.15.15/examples/uc_cdp_events.py +52 -0
  7. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/verify_undetected.py +16 -10
  8. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/syntax_formats.md +2 -2
  9. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/requirements.txt +1 -1
  10. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/requirements.txt +1 -1
  11. seleniumbase-4.15.15/seleniumbase/__version__.py +2 -0
  12. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/exceptions.py +5 -0
  13. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_mkchart.py +12 -7
  14. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_mkfile.py +1 -2
  15. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_mkpres.py +6 -1
  16. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/browser_launcher.py +35 -0
  17. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/base_case.py +30 -3
  18. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/js_utils.py +10 -7
  19. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/shared_utils.py +5 -0
  20. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/PKG-INFO +23 -24
  21. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/requires.txt +2 -2
  22. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/setup.py +2 -2
  23. seleniumbase-4.15.13/examples/uc_cdp_events.py +0 -23
  24. seleniumbase-4.15.13/seleniumbase/__version__.py +0 -2
  25. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/Workflows.md +0 -0
  26. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/pages.yml +0 -0
  27. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/python-nightly-mac.yml +0 -0
  28. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/python-nightly-ubuntu.yml +0 -0
  29. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/python-nightly-windows.yml +0 -0
  30. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/python-package-legacy.yml +0 -0
  31. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.github/workflows/python-package.yml +0 -0
  32. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.gitignore +0 -0
  33. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/.travis.yml +0 -0
  34. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/CHANGELOG.md +0 -0
  35. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/CNAME +0 -0
  36. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/CODE_OF_CONDUCT.md +0 -0
  37. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/CONTRIBUTING.md +0 -0
  38. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/Dockerfile +0 -0
  39. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/LICENSE +0 -0
  40. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/MANIFEST.in +0 -0
  41. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/SECURITY.md +0 -0
  42. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/_config.yml +0 -0
  43. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/azure-pipelines.yml +0 -0
  44. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/ReadMe.md +0 -0
  45. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/__init__.py +0 -0
  46. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/basic_test.py +0 -0
  47. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/ReadMe.md +0 -0
  48. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/__init__.py +0 -0
  49. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/behave.ini +0 -0
  50. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/__init__.py +0 -0
  51. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/behave.ini +0 -0
  52. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/calculator.feature +0 -0
  53. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/environment.py +0 -0
  54. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/fail_page.feature +0 -0
  55. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/realworld.feature +0 -0
  56. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/steps/__init__.py +0 -0
  57. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/steps/calculator.py +0 -0
  58. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/steps/fail_page.py +0 -0
  59. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/steps/imported.py +0 -0
  60. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
  61. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/behave_bdd/features/swag_labs.feature +0 -0
  62. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/ReadMe.md +0 -0
  63. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/__init__.py +0 -0
  64. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/base_test_case.py +0 -0
  65. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/boilerplate_test.py +0 -0
  66. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/classic_obj_test.py +0 -0
  67. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/page_objects.py +0 -0
  68. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/__init__.py +0 -0
  69. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
  70. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
  71. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
  72. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
  73. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/google_objects.py +0 -0
  74. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/google_test.py +0 -0
  75. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/sb_swag_test.py +0 -0
  76. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/swag_labs_test.py +0 -0
  77. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/samples/test_page_objects.py +0 -0
  78. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/boilerplates/sb_fixture_test.py +0 -0
  79. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/ReadMe.md +0 -0
  80. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/mac_cap_file.py +0 -0
  81. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/sample_cap_file_BS.py +0 -0
  82. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/sample_cap_file_SL.py +0 -0
  83. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/selenoid_cap_file.py +0 -0
  84. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/capabilities/win10_cap_file.py +0 -0
  85. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
  86. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
  87. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
  88. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
  89. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
  90. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
  91. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
  92. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
  93. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/case_summary.md +0 -0
  94. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/ReadMe.md +0 -0
  95. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/chart_presentation.py +0 -0
  96. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/my_chart.py +0 -0
  97. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/pie_charts.py +0 -0
  98. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/test_area_chart.py +0 -0
  99. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/test_display_chart.py +0 -0
  100. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/test_line_chart.py +0 -0
  101. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/test_multi_series.py +0 -0
  102. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/chart_maker/test_save_chart.py +0 -0
  103. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/coffee_cart_tests.py +0 -0
  104. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/custom_settings.py +0 -0
  105. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/desktop_apps/ReadMe.md +0 -0
  106. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/desktop_apps/recorder.py +0 -0
  107. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/dialog_boxes/ReadMe.md +0 -0
  108. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/edge_test.py +0 -0
  109. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/example_config.cfg +0 -0
  110. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/example_logs/ReadMe.md +0 -0
  111. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/example_logs/basic_test_info.txt +0 -0
  112. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/example_logs/page_source.html +0 -0
  113. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/example_logs/screenshot.png +0 -0
  114. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/github_test.py +0 -0
  115. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/gui_test_runner.py +0 -0
  116. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/hack_the_planet.py +0 -0
  117. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/handle_alert_test.py +0 -0
  118. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/iframe_tests.py +0 -0
  119. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/locale_code_test.py +0 -0
  120. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/master_qa/ReadMe.md +0 -0
  121. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/master_qa/__init__.py +0 -0
  122. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/master_qa/basic_masterqa_test_0.py +0 -0
  123. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/master_qa/masterqa_test_1.py +0 -0
  124. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/master_qa/pytest.ini +0 -0
  125. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/__init__.py +0 -0
  126. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/ReadMe.md +0 -0
  127. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/__init__.py +0 -0
  128. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/example_spec.js +0 -0
  129. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/example_test.py +0 -0
  130. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/input_spec.js +0 -0
  131. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/input_test.py +0 -0
  132. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/mat_paginator_spec.js +0 -0
  133. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/protractor/mat_paginator_test.py +0 -0
  134. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/ReadMe.md +0 -0
  135. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/__init__.py +0 -0
  136. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
  137. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
  138. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/messy_raw.py +0 -0
  139. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/pytest.ini +0 -0
  140. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/refined_raw.py +0 -0
  141. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/migration/raw_selenium/simple_sbase.py +0 -0
  142. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/my_first_test.py +0 -0
  143. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/nth_child_test.py +0 -0
  144. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/__init__.py +0 -0
  145. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/demo_page.html +0 -0
  146. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/load_html_test.py +0 -0
  147. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/test_demo_page.py +0 -0
  148. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/test_handle_alerts.py +0 -0
  149. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/test_request_fixture.py +0 -0
  150. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/offline_examples/test_user_agent.py +0 -0
  151. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/old_wordle_script.py +0 -0
  152. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/parameterized_test.py +0 -0
  153. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/performance_test.py +0 -0
  154. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/ReadMe.md +0 -0
  155. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/core_presentation.py +0 -0
  156. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/edge_presentation.py +0 -0
  157. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/fundamentals.py +0 -0
  158. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/my_presentation.py +0 -0
  159. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/presenter/py_virtual_envs.py +0 -0
  160. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/proxy_test.py +0 -0
  161. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/pytest.ini +0 -0
  162. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/rate_limiting_test.py +0 -0
  163. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_browser_launcher.py +0 -0
  164. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_call.py +0 -0
  165. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_driver_context.py +0 -0
  166. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_file_call.py +0 -0
  167. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_main_call.py +0 -0
  168. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_parameter_script.py +0 -0
  169. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_sb.py +0 -0
  170. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/raw_test_scripts.py +0 -0
  171. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/setup.cfg +0 -0
  172. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/shadow_root_test.py +0 -0
  173. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/swag_labs_user_tests.py +0 -0
  174. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_apple_site.py +0 -0
  175. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_assert_elements.py +0 -0
  176. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_calculator.py +0 -0
  177. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_canvas.py +0 -0
  178. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_checkboxes.py +0 -0
  179. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_chinese_pdf.py +0 -0
  180. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_chromedriver.py +0 -0
  181. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_coffee_cart.py +0 -0
  182. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_console_logging.py +0 -0
  183. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_contains_selector.py +0 -0
  184. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_cycle_elements.py +0 -0
  185. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_decryption.py +0 -0
  186. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_deferred_asserts.py +0 -0
  187. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_demo_site.py +0 -0
  188. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_detect_404s.py +0 -0
  189. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_docs_site.py +0 -0
  190. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_double_click.py +0 -0
  191. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_download_files.py +0 -0
  192. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_download_images.py +0 -0
  193. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_drag_and_drop.py +0 -0
  194. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_error_page.py +0 -0
  195. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_event_firing.py +0 -0
  196. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_fail.py +0 -0
  197. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_get_locale_code.py +0 -0
  198. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_get_pdf_text.py +0 -0
  199. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_get_user_agent.py +0 -0
  200. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_hack_search.py +0 -0
  201. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_image_saving.py +0 -0
  202. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_inspect_html.py +0 -0
  203. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_login.py +0 -0
  204. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_markers.py +0 -0
  205. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_mfa_login.py +0 -0
  206. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_multiple_drivers.py +0 -0
  207. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_null.py +0 -0
  208. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_override_driver.py +0 -0
  209. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_override_sb_fixture.py +0 -0
  210. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_parse_soup.py +0 -0
  211. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_pdf_asserts.py +0 -0
  212. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_pytest_parametrize.py +0 -0
  213. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_repeat_tests.py +0 -0
  214. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_request_sb_fixture.py +0 -0
  215. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_save_screenshots.py +0 -0
  216. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_sb_fixture.py +0 -0
  217. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_scrape_bing.py +0 -0
  218. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_select_options.py +0 -0
  219. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_shadow_dom.py +0 -0
  220. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_show_file_choosers.py +0 -0
  221. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_skype_site.py +0 -0
  222. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_suite.py +0 -0
  223. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_swag_labs.py +0 -0
  224. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_tinymce.py +0 -0
  225. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_todomvc.py +0 -0
  226. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_url_asserts.py +0 -0
  227. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_usefixtures.py +0 -0
  228. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_verify_chromedriver.py +0 -0
  229. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_window_switching.py +0 -0
  230. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_xfail.py +0 -0
  231. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/test_xkcd.py +0 -0
  232. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/time_limit_test.py +0 -0
  233. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/ReadMe.md +0 -0
  234. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/bootstrap_google_tour.py +0 -0
  235. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
  236. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/driverjs_maps_tour.py +0 -0
  237. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/google_tour.py +0 -0
  238. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/hopscotch_google_tour.py +0 -0
  239. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/introjs_google_tour.py +0 -0
  240. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/maps_introjs_tour.py +0 -0
  241. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/octocat_tour.py +0 -0
  242. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/shepherd_google_tour.py +0 -0
  243. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/tour_examples/xkcd_tour.py +0 -0
  244. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/ReadMe.md +0 -0
  245. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/chinese_test_1.py +0 -0
  246. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/dutch_test_1.py +0 -0
  247. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/english_test_1.py +0 -0
  248. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/french_test_1.py +0 -0
  249. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/italian_test_1.py +0 -0
  250. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/portuguese_test_1.py +0 -0
  251. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/pytest.ini +0 -0
  252. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/russian_test_1.py +0 -0
  253. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/translations/spanish_test_1.py +0 -0
  254. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/unit_tests/ReadMe.md +0 -0
  255. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/unit_tests/verify_framework.py +0 -0
  256. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/upgrade_chromedriver.py +0 -0
  257. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/upload_file_test.py +0 -0
  258. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/user_agent_test.py +0 -0
  259. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/ReadMe.md +0 -0
  260. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/__init__.py +0 -0
  261. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
  262. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
  263. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
  264. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
  265. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
  266. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
  267. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/layout_test.py +0 -0
  268. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/python_home_test.py +0 -0
  269. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/test_layout_fail.py +0 -0
  270. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/visual_testing/xkcd_visual_test.py +0 -0
  271. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/wordle_test.py +0 -0
  272. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/xpath_test.py +0 -0
  273. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/examples/youtube_search_test.py +0 -0
  274. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/ReadMe.md +0 -0
  275. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/behave_gui.md +0 -0
  276. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/case_plans.md +0 -0
  277. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/chinese.md +0 -0
  278. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/commander.md +0 -0
  279. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/customizing_test_runs.md +0 -0
  280. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/demo_mode.md +0 -0
  281. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/desired_capabilities.md +0 -0
  282. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/features_list.md +0 -0
  283. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/happy_customers.md +0 -0
  284. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/hidden_files_info.md +0 -0
  285. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/how_it_works.md +0 -0
  286. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/html_inspector.md +0 -0
  287. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/install.md +0 -0
  288. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/install_python_pip_git.md +0 -0
  289. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/js_package_manager.md +0 -0
  290. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/locale_codes.md +0 -0
  291. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/method_summary.md +0 -0
  292. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/mobile_testing.md +0 -0
  293. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/mysql_installation.md +0 -0
  294. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/recorder_mode.md +0 -0
  295. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/shadow_dom.md +0 -0
  296. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/thank_you.md +0 -0
  297. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/translations.md +0 -0
  298. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/useful_grep_commands.md +0 -0
  299. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/using_safari_driver.md +0 -0
  300. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/verify_webdriver.md +0 -0
  301. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/virtualenv_instructions.md +0 -0
  302. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/help_docs/webdriver_installation.md +0 -0
  303. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/install.sh +0 -0
  304. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/__init__.py +0 -0
  305. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
  306. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/azure/jenkins/ReadMe.md +0 -0
  307. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/ReadMe.md +0 -0
  308. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/behave.ini +0 -0
  309. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/__init__.py +0 -0
  310. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/behave.ini +0 -0
  311. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/calculator.feature +0 -0
  312. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/environment.py +0 -0
  313. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/fail_page.feature +0 -0
  314. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/realworld.feature +0 -0
  315. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/steps/__init__.py +0 -0
  316. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/steps/calculator.py +0 -0
  317. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/steps/fail_page.py +0 -0
  318. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/steps/real_world.py +0 -0
  319. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/steps/swag_labs.py +0 -0
  320. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/behave/features/swag_labs.feature +0 -0
  321. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/brython/ReadMe.md +0 -0
  322. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/brython/index.html +0 -0
  323. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/brython/index.py +0 -0
  324. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/brython/library.html +0 -0
  325. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/docker/ReadMe.md +0 -0
  326. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/docker/docker-entrypoint.sh +0 -0
  327. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/docker/docker_config.cfg +0 -0
  328. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
  329. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/docker/run_docker_test_in_firefox.sh +0 -0
  330. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/github/ReadMe.md +0 -0
  331. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/github/workflows/ReadMe.md +0 -0
  332. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/github/workflows/extras.md +0 -0
  333. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/google_cloud/ReadMe.md +0 -0
  334. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/katalon/ReadMe.md +0 -0
  335. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/linux/Linuxfile.sh +0 -0
  336. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/linux/ReadMe.md +0 -0
  337. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/linux/Xvfb_launcher.sh +0 -0
  338. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/linux/jenkins_permissions.sh +0 -0
  339. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/linux/tomcat_permissions.sh +0 -0
  340. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/ReadMe.md +0 -0
  341. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/__init__.py +0 -0
  342. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/index.html +0 -0
  343. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/my_first_test.py +0 -0
  344. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/npm-shrinkwrap.json +0 -0
  345. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/package.json +0 -0
  346. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/server.js +0 -0
  347. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/node_js/test_demo_site.py +0 -0
  348. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/selenium_grid/ReadMe.md +0 -0
  349. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/integrations/selenium_ide/ReadMe.md +0 -0
  350. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs.yml +0 -0
  351. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/ReadMe.txt +0 -0
  352. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/docs_instructions.txt +0 -0
  353. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/dash_pie.png +0 -0
  354. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/dash_pie_2.png +0 -0
  355. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/dash_pie_3.png +0 -0
  356. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/favicon.ico +0 -0
  357. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/grad_logo.png +0 -0
  358. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/green_icon.png +0 -0
  359. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/green_logo.png +0 -0
  360. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/green_logo2.png +0 -0
  361. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/green_logo3.png +0 -0
  362. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo3.png +0 -0
  363. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo3a.png +0 -0
  364. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo3b.png +0 -0
  365. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo3c.png +0 -0
  366. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo4.png +0 -0
  367. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo5.png +0 -0
  368. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo6.png +0 -0
  369. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/logo7.png +0 -0
  370. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/sb_icon.png +0 -0
  371. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/sb_logo_10.png +0 -0
  372. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/sb_logo_7.png +0 -0
  373. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/side_by_side.png +0 -0
  374. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/social/share_facebook.svg +0 -0
  375. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/social/share_github.svg +0 -0
  376. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/social/share_gitter.svg +0 -0
  377. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/social/share_instagram.svg +0 -0
  378. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/img/social/share_twitter.svg +0 -0
  379. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/index.html +0 -0
  380. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/mkdocs_build/prepare.py +0 -0
  381. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/pytest.ini +0 -0
  382. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/sbase/ReadMe.txt +0 -0
  383. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/sbase/__init__.py +0 -0
  384. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/sbase/__main__.py +0 -0
  385. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/sbase/steps.py +0 -0
  386. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/ReadMe.md +0 -0
  387. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/__init__.py +0 -0
  388. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/__main__.py +0 -0
  389. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/behave/__init__.py +0 -0
  390. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/behave/behave_helper.py +0 -0
  391. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/behave/behave_sb.py +0 -0
  392. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/behave/steps.py +0 -0
  393. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/ReadMe.md +0 -0
  394. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/__init__.py +0 -0
  395. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/decorators.py +0 -0
  396. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/encryption.py +0 -0
  397. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/obfuscate.py +0 -0
  398. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/common/unobfuscate.py +0 -0
  399. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/config/__init__.py +0 -0
  400. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/config/ad_block_list.py +0 -0
  401. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/config/proxy_list.py +0 -0
  402. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/config/settings.py +0 -0
  403. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/ReadMe.md +0 -0
  404. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/__init__.py +0 -0
  405. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/logo_helper.py +0 -0
  406. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/rich_helper.py +0 -0
  407. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/run.py +0 -0
  408. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  409. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  410. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_commander.py +0 -0
  411. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_install.py +0 -0
  412. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  413. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  414. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  415. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_print.py +0 -0
  416. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  417. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/__init__.py +0 -0
  418. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/application_manager.py +0 -0
  419. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/capabilities_parser.py +0 -0
  420. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/colored_traceback.py +0 -0
  421. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/create_db_tables.sql +0 -0
  422. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/detect_b_ver.py +0 -0
  423. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/download_helper.py +0 -0
  424. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/encoded_images.py +0 -0
  425. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/jqc_helper.py +0 -0
  426. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/log_helper.py +0 -0
  427. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/mysql.py +0 -0
  428. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/proxy_helper.py +0 -0
  429. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/recorder_helper.py +0 -0
  430. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/report_helper.py +0 -0
  431. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/s3_manager.py +0 -0
  432. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/session_helper.py +0 -0
  433. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/settings_parser.py +0 -0
  434. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/style_sheet.py +0 -0
  435. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/testcase_manager.py +0 -0
  436. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/tour_helper.py +0 -0
  437. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/core/visual_helper.py +0 -0
  438. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/drivers/ReadMe.md +0 -0
  439. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/drivers/__init__.py +0 -0
  440. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/ReadMe.md +0 -0
  441. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/__init__.py +0 -0
  442. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/ad_block.zip +0 -0
  443. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/disable_csp.zip +0 -0
  444. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/recorder.zip +0 -0
  445. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/extensions/sbase_ext.zip +0 -0
  446. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/__init__.py +0 -0
  447. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/constants.py +0 -0
  448. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  449. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/errors.py +0 -0
  450. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/page_actions.py +0 -0
  451. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/page_utils.py +0 -0
  452. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/unittest_helper.py +0 -0
  453. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/words.py +0 -0
  454. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  455. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/js_code/__init__.py +0 -0
  456. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/js_code/active_css_js.py +0 -0
  457. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/js_code/live_js.py +0 -0
  458. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/js_code/recorder_js.py +0 -0
  459. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/masterqa/ReadMe.md +0 -0
  460. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/masterqa/__init__.py +0 -0
  461. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/masterqa/master_qa.py +0 -0
  462. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/__init__.py +0 -0
  463. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/base_plugin.py +0 -0
  464. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/basic_test_info.py +0 -0
  465. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  466. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/driver_manager.py +0 -0
  467. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/page_source.py +0 -0
  468. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/pytest_plugin.py +0 -0
  469. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  470. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/sb_manager.py +0 -0
  471. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/screen_shots.py +0 -0
  472. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/plugins/selenium_plugin.py +0 -0
  473. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/resources/ReadMe.md +0 -0
  474. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/resources/__init__.py +0 -0
  475. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/resources/favicon.ico +0 -0
  476. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/__init__.py +0 -0
  477. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/chinese.py +0 -0
  478. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/dutch.py +0 -0
  479. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/french.py +0 -0
  480. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/italian.py +0 -0
  481. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/japanese.py +0 -0
  482. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/korean.py +0 -0
  483. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/master_dict.py +0 -0
  484. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/portuguese.py +0 -0
  485. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/russian.py +0 -0
  486. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/spanish.py +0 -0
  487. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/translate/translator.py +0 -0
  488. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/__init__.py +0 -0
  489. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/cdp.py +0 -0
  490. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/dprocess.py +0 -0
  491. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/options.py +0 -0
  492. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/patcher.py +0 -0
  493. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/reactor.py +0 -0
  494. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/undetected/webelement.py +0 -0
  495. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/__init__.py +0 -0
  496. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
  497. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  498. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  499. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  500. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  501. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  502. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  503. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  504. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  505. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  506. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  507. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  508. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
  509. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  510. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  511. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/SOURCES.txt +0 -0
  512. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/dependency_links.txt +0 -0
  513. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/entry_points.txt +0 -0
  514. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/seleniumbase.egg-info/top_level.txt +0 -0
  515. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/setup.cfg +0 -0
  516. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/virtualenv_install.sh +0 -0
  517. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/win_install.bat +0 -0
  518. {seleniumbase-4.15.13 → seleniumbase-4.15.15}/win_virtualenv.bat +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.15.13
3
+ Version: 4.15.15
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
@@ -228,7 +228,7 @@ With raw Selenium, that requires more code:<br />
228
228
  <summary> ▶️ Learn about different ways of writing tests (<b>click to expand</b>)</summary>
229
229
  <div>
230
230
 
231
- <p align="left">📘📝 An example test with the <b>BaseCase</b> class. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b> or <b>pynose</b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">Learn more</a>)</p>
231
+ <p align="left">📘📝 An example test with the <b>BaseCase</b> class. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b> or <b><a href="https://github.com/mdmintz/pynose">pynose</a></b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">Learn more</a>)</p>
232
232
 
233
233
  ```python
234
234
  from seleniumbase import BaseCase
@@ -521,14 +521,14 @@ self.assert_no_js_errors() # Verify there are no JS errors.
521
521
  <p>✅ SeleniumBase uses simple syntax for commands. Example:</p>
522
522
 
523
523
  ```python
524
- self.type("input", "dogs\n")
524
+ self.type("input", "dogs\n") # (The "\n" presses ENTER)
525
525
  ```
526
526
 
527
527
  Most SeleniumBase scripts can be run with <code>pytest</code>, <code>pynose</code>, or pure <code>python</code>. Not all test runners can run all test formats. For example, tests that use the ``sb`` pytest fixture can only be run with ``pytest``. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
528
528
 
529
529
  ```bash
530
530
  pytest coffee_cart_tests.py --rs
531
- pytest test_sb_fixture.py
531
+ pytest test_sb_fixture.py --demo
532
532
  pytest test_suite.py --rs --html=report.html --dashboard
533
533
 
534
534
  pynose basic_test.py --mobile
@@ -567,12 +567,14 @@ pynose [FILE_NAME.py]:[CLASS_NAME].[METHOD_NAME]
567
567
 
568
568
  ✅ SeleniumBase supports all major browsers and operating systems:
569
569
  <p><b>Browsers:</b> Chrome, Edge, Firefox, and Safari.</p>
570
- <p><b>Systems: </b>Linux/Ubuntu, macOS, and Windows.</p>
570
+ <p><b>Systems:</b> Linux/Ubuntu, macOS, and Windows.</p>
571
571
 
572
572
  ✅ SeleniumBase works on all popular CI/CD platforms:
573
573
  <p><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md"><img alt="GitHub Actions integration" src="https://img.shields.io/badge/GitHub_Actions-12B2C2.svg?logo=GitHubActions&logoColor=CFFFC2" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/jenkins/ReadMe.md"><img alt="Jenkins integration" src="https://img.shields.io/badge/Jenkins-32B242.svg?logo=jenkins&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/azure_pipelines/ReadMe.md"><img alt="Azure integration" src="https://img.shields.io/badge/Azure-2288EE.svg?logo=AzurePipelines&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/google_cloud/ReadMe.md"><img alt="Google Cloud integration" src="https://img.shields.io/badge/Google_Cloud-11CAE8.svg?logo=GoogleCloud&logoColor=EE0066" /></a> <a href="#utilizing_advanced_features"><img alt="AWS integration" src="https://img.shields.io/badge/AWS-4488DD.svg?logo=AmazonAWS&logoColor=FFFF44" /></a> <a href="https://en.wikipedia.org/wiki/Personal_computer" target="_blank"><img alt="Your Computer" src="https://img.shields.io/badge/💻_Your_Computer-44E6E6.svg" /></a></p>
574
574
 
575
- <p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b> to speed up manual testing with automation while the manual tester handles validation.</p>
575
+ <p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b> to speed up manual testing with automation while manual testers handle validation.</p>
576
+
577
+ <p>✅ SeleniumBase supports <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/offline_examples">running tests while offline</a> (<i>assuming webdrivers have previously been downloaded when online</i>).</p>
576
578
 
577
579
  <p>✅ For a full list of SeleniumBase features, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">Click Here</a>.</p>
578
580
 
@@ -614,7 +616,7 @@ pytest test_fail.py --pdb
614
616
  pytest test_coffee_cart.py --trace
615
617
  ```
616
618
 
617
- <a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/cdn/gif/coffee_pdbp.gif" alt="SeleniumBase test with the pdbp (Pdb+) debugger" title="SeleniumBase test with the pdbp (Pdb+) debugger" /></a>
619
+ <a href="https://github.com/mdmintz/pdbp"><img src="https://seleniumbase.github.io/cdn/gif/coffee_pdbp.gif" alt="SeleniumBase test with the pdbp (Pdb+) debugger" title="SeleniumBase test with the pdbp (Pdb+) debugger" /></a>
618
620
 
619
621
 
620
622
  <a id="command_line_options"></a>
@@ -742,9 +744,9 @@ pytest test_coffee_cart.py --trace
742
744
  ```bash
743
745
  cd examples/
744
746
 
745
- pytest test_suite.py --browser=chrome
747
+ pytest test_suite.py --chrome
746
748
 
747
- pytest test_suite.py --browser=firefox
749
+ pytest test_suite.py --firefox
748
750
  ```
749
751
 
750
752
  An easy way to override seleniumbase/config/settings.py is by using a custom settings file.
@@ -758,7 +760,7 @@ Inside your tests, you can use ``self.data`` to access that.
758
760
  <a id="directory_configuration"></a>
759
761
  <h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Directory Configuration:</h2>
760
762
 
761
- 🔵 When running tests with **pytest**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **pynose**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Folders should also include a blank ``__init__.py`` file to allow your tests to import files from that folder.
763
+ 🔵 When running tests with **``pytest``**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **``pynose``**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Test folders should also include a blank **[__init__.py](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/offline_examples/__init__.py)** file to allow your test files to import other files from that folder.
762
764
 
763
765
  🔵 ``sbase mkdir DIR`` creates a folder with config files and sample tests:
764
766
 
@@ -1282,7 +1284,7 @@ self.execute_script("return jQuery('textarea')[2].value") # Returns the css "va
1282
1284
 
1283
1285
  <h3>🔵 How to handle a restrictive CSP:</h3>
1284
1286
 
1285
- 🛑 Some websites have a restrictive [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to prevent users from loading jQuery and other external libraries onto their websites. If you need to use jQuery or another JS library on such a website, add ``--disable-csp`` as a ``pytest`` command-line option.
1287
+ Some websites have a restrictive [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to prevent users from loading jQuery and other external libraries onto their websites. If you need to use jQuery or another JS library on those websites, add ``--disable-csp`` as a ``pytest`` command-line option to load a Chromium extension that bypasses the CSP.
1286
1288
 
1287
1289
  <h3>🔵 More JavaScript fun:</h3>
1288
1290
 
@@ -1364,25 +1366,22 @@ pytest --reruns=1 --reruns-delay=1
1364
1366
  <div><a href="https://github.com/seleniumbase/SeleniumBase/issues?q=is%3Aissue+is%3Aclosed"><img src="https://img.shields.io/github/issues-closed-raw/seleniumbase/SeleniumBase.svg?color=22BB88" title="Closed Issues" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/pulls?q=is%3Apr+is%3Aclosed"><img src="https://img.shields.io/github/issues-pr-closed/seleniumbase/SeleniumBase.svg?logo=github&logoColor=white&color=22BB99" title="Closed Pull Requests" /></a></div>
1365
1367
  </p>
1366
1368
 
1367
- <p>
1368
- <div><b>If you like SeleniumBase, star us! ⭐</b></div>
1369
- <div><a href="https://github.com/seleniumbase/SeleniumBase/stargazers"><img src="https://img.shields.io/github/stars/seleniumbase/seleniumbase.svg?color=19A57B" title="Stargazers" /></a></div>
1370
- </p>
1371
-
1372
1369
  <p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/sb_logo_10t.png" alt="SeleniumBase" title="SeleniumBase" width="266" /></a></p>
1373
1370
 
1371
+ <p><div>
1372
+ <span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="68" /></a></span>
1373
+ <span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="62" /></a></span>
1374
+ <span><a href="https://www.facebook.com/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_facebook.svg" title="SeleniumBase on Facebook" alt="SeleniumBase on Facebook" width="64" /></a></span>
1375
+ <span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="50" /></a></span>
1376
+ </div></p>
1377
+
1374
1378
  <p><div><a href="https://github.com/mdmintz">https://github.com/mdmintz</a></div></p>
1375
1379
 
1376
1380
  <div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/fancy_logo_14.png" title="SeleniumBase" width="220" /></a></div> <div><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-22BBCC.svg" title="SeleniumBase" /></a> <a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://img.shields.io/gitter/room/seleniumbase/SeleniumBase.svg" alt="Gitter chat"/></a></div> <div><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://img.shields.io/badge/tested%20with-SeleniumBase-04C38E.svg" alt="Tested with SeleniumBase" /></a></div> <div><a href="https://seleniumbase.io"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg" alt="SeleniumBase Docs" /></a></div>
1377
- <p><a href="https://pepy.tech/project/seleniumbase" target="_blank"><img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a></p>
1378
-
1379
- <p><div>
1380
- <span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="70" /></a></span>
1381
- <span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="64" /></a></span>
1382
- <span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="52" /></a></span>
1383
- </div></p>
1381
+ <div><a href="https://pepy.tech/project/seleniumbase" target="_blank"><img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a></div>
1382
+ <div><a href="https://github.com/seleniumbase/SeleniumBase/stargazers"><img src="https://img.shields.io/github/stars/seleniumbase/seleniumbase.svg?color=19A57B" title="Stargazers" /></a></div>
1384
1383
 
1385
1384
  --------
1386
1385
 
1387
1386
  <p><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb.png" alt="SeleniumBase" title="SeleniumBase" width="300" /></a></p>
1388
- <p><a href="https://www.python.org/downloads/" target="_blank"><img src="https://img.shields.io/pypi/pyversions/seleniumbase.svg?color=22AAEE&logo=python&logoColor=FEDC54" title="Supported Python Versions" /></a></p>
1387
+ <p><a href="https://pypi.org/project/seleniumbase/" target="_blank"><img src="https://img.shields.io/pypi/pyversions/seleniumbase.svg?color=22AAEE&logo=python&logoColor=FEDC54" title="Supported Python Versions" /></a></p>
@@ -167,7 +167,7 @@ With raw Selenium, that requires more code:<br />
167
167
  <summary> ▶️ Learn about different ways of writing tests (<b>click to expand</b>)</summary>
168
168
  <div>
169
169
 
170
- <p align="left">📘📝 An example test with the <b>BaseCase</b> class. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b> or <b>pynose</b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">Learn more</a>)</p>
170
+ <p align="left">📘📝 An example test with the <b>BaseCase</b> class. Runs with <b><a href="https://docs.pytest.org/en/latest/how-to/usage.html">pytest</a></b> or <b><a href="https://github.com/mdmintz/pynose">pynose</a></b>. (<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">Learn more</a>)</p>
171
171
 
172
172
  ```python
173
173
  from seleniumbase import BaseCase
@@ -460,14 +460,14 @@ self.assert_no_js_errors() # Verify there are no JS errors.
460
460
  <p>✅ SeleniumBase uses simple syntax for commands. Example:</p>
461
461
 
462
462
  ```python
463
- self.type("input", "dogs\n")
463
+ self.type("input", "dogs\n") # (The "\n" presses ENTER)
464
464
  ```
465
465
 
466
466
  Most SeleniumBase scripts can be run with <code>pytest</code>, <code>pynose</code>, or pure <code>python</code>. Not all test runners can run all test formats. For example, tests that use the ``sb`` pytest fixture can only be run with ``pytest``. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
467
467
 
468
468
  ```bash
469
469
  pytest coffee_cart_tests.py --rs
470
- pytest test_sb_fixture.py
470
+ pytest test_sb_fixture.py --demo
471
471
  pytest test_suite.py --rs --html=report.html --dashboard
472
472
 
473
473
  pynose basic_test.py --mobile
@@ -506,12 +506,14 @@ pynose [FILE_NAME.py]:[CLASS_NAME].[METHOD_NAME]
506
506
 
507
507
  ✅ SeleniumBase supports all major browsers and operating systems:
508
508
  <p><b>Browsers:</b> Chrome, Edge, Firefox, and Safari.</p>
509
- <p><b>Systems: </b>Linux/Ubuntu, macOS, and Windows.</p>
509
+ <p><b>Systems:</b> Linux/Ubuntu, macOS, and Windows.</p>
510
510
 
511
511
  ✅ SeleniumBase works on all popular CI/CD platforms:
512
512
  <p><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md"><img alt="GitHub Actions integration" src="https://img.shields.io/badge/GitHub_Actions-12B2C2.svg?logo=GitHubActions&logoColor=CFFFC2" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/jenkins/ReadMe.md"><img alt="Jenkins integration" src="https://img.shields.io/badge/Jenkins-32B242.svg?logo=jenkins&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/azure_pipelines/ReadMe.md"><img alt="Azure integration" src="https://img.shields.io/badge/Azure-2288EE.svg?logo=AzurePipelines&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/google_cloud/ReadMe.md"><img alt="Google Cloud integration" src="https://img.shields.io/badge/Google_Cloud-11CAE8.svg?logo=GoogleCloud&logoColor=EE0066" /></a> <a href="#utilizing_advanced_features"><img alt="AWS integration" src="https://img.shields.io/badge/AWS-4488DD.svg?logo=AmazonAWS&logoColor=FFFF44" /></a> <a href="https://en.wikipedia.org/wiki/Personal_computer" target="_blank"><img alt="Your Computer" src="https://img.shields.io/badge/💻_Your_Computer-44E6E6.svg" /></a></p>
513
513
 
514
- <p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b> to speed up manual testing with automation while the manual tester handles validation.</p>
514
+ <p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b> to speed up manual testing with automation while manual testers handle validation.</p>
515
+
516
+ <p>✅ SeleniumBase supports <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/offline_examples">running tests while offline</a> (<i>assuming webdrivers have previously been downloaded when online</i>).</p>
515
517
 
516
518
  <p>✅ For a full list of SeleniumBase features, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">Click Here</a>.</p>
517
519
 
@@ -553,7 +555,7 @@ pytest test_fail.py --pdb
553
555
  pytest test_coffee_cart.py --trace
554
556
  ```
555
557
 
556
- <a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/cdn/gif/coffee_pdbp.gif" alt="SeleniumBase test with the pdbp (Pdb+) debugger" title="SeleniumBase test with the pdbp (Pdb+) debugger" /></a>
558
+ <a href="https://github.com/mdmintz/pdbp"><img src="https://seleniumbase.github.io/cdn/gif/coffee_pdbp.gif" alt="SeleniumBase test with the pdbp (Pdb+) debugger" title="SeleniumBase test with the pdbp (Pdb+) debugger" /></a>
557
559
 
558
560
 
559
561
  <a id="command_line_options"></a>
@@ -681,9 +683,9 @@ pytest test_coffee_cart.py --trace
681
683
  ```bash
682
684
  cd examples/
683
685
 
684
- pytest test_suite.py --browser=chrome
686
+ pytest test_suite.py --chrome
685
687
 
686
- pytest test_suite.py --browser=firefox
688
+ pytest test_suite.py --firefox
687
689
  ```
688
690
 
689
691
  An easy way to override seleniumbase/config/settings.py is by using a custom settings file.
@@ -697,7 +699,7 @@ Inside your tests, you can use ``self.data`` to access that.
697
699
  <a id="directory_configuration"></a>
698
700
  <h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Directory Configuration:</h2>
699
701
 
700
- 🔵 When running tests with **pytest**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **pynose**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Folders should also include a blank ``__init__.py`` file to allow your tests to import files from that folder.
702
+ 🔵 When running tests with **``pytest``**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **``pynose``**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Test folders should also include a blank **[__init__.py](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/offline_examples/__init__.py)** file to allow your test files to import other files from that folder.
701
703
 
702
704
  🔵 ``sbase mkdir DIR`` creates a folder with config files and sample tests:
703
705
 
@@ -1221,7 +1223,7 @@ self.execute_script("return jQuery('textarea')[2].value") # Returns the css "va
1221
1223
 
1222
1224
  <h3>🔵 How to handle a restrictive CSP:</h3>
1223
1225
 
1224
- 🛑 Some websites have a restrictive [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to prevent users from loading jQuery and other external libraries onto their websites. If you need to use jQuery or another JS library on such a website, add ``--disable-csp`` as a ``pytest`` command-line option.
1226
+ Some websites have a restrictive [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to prevent users from loading jQuery and other external libraries onto their websites. If you need to use jQuery or another JS library on those websites, add ``--disable-csp`` as a ``pytest`` command-line option to load a Chromium extension that bypasses the CSP.
1225
1227
 
1226
1228
  <h3>🔵 More JavaScript fun:</h3>
1227
1229
 
@@ -1303,25 +1305,22 @@ pytest --reruns=1 --reruns-delay=1
1303
1305
  <div><a href="https://github.com/seleniumbase/SeleniumBase/issues?q=is%3Aissue+is%3Aclosed"><img src="https://img.shields.io/github/issues-closed-raw/seleniumbase/SeleniumBase.svg?color=22BB88" title="Closed Issues" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/pulls?q=is%3Apr+is%3Aclosed"><img src="https://img.shields.io/github/issues-pr-closed/seleniumbase/SeleniumBase.svg?logo=github&logoColor=white&color=22BB99" title="Closed Pull Requests" /></a></div>
1304
1306
  </p>
1305
1307
 
1306
- <p>
1307
- <div><b>If you like SeleniumBase, star us! ⭐</b></div>
1308
- <div><a href="https://github.com/seleniumbase/SeleniumBase/stargazers"><img src="https://img.shields.io/github/stars/seleniumbase/seleniumbase.svg?color=19A57B" title="Stargazers" /></a></div>
1309
- </p>
1310
-
1311
1308
  <p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/sb_logo_10t.png" alt="SeleniumBase" title="SeleniumBase" width="266" /></a></p>
1312
1309
 
1310
+ <p><div>
1311
+ <span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="68" /></a></span>
1312
+ <span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="62" /></a></span>
1313
+ <span><a href="https://www.facebook.com/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_facebook.svg" title="SeleniumBase on Facebook" alt="SeleniumBase on Facebook" width="64" /></a></span>
1314
+ <span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="50" /></a></span>
1315
+ </div></p>
1316
+
1313
1317
  <p><div><a href="https://github.com/mdmintz">https://github.com/mdmintz</a></div></p>
1314
1318
 
1315
1319
  <div><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/fancy_logo_14.png" title="SeleniumBase" width="220" /></a></div> <div><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-22BBCC.svg" title="SeleniumBase" /></a> <a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://img.shields.io/gitter/room/seleniumbase/SeleniumBase.svg" alt="Gitter chat"/></a></div> <div><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://img.shields.io/badge/tested%20with-SeleniumBase-04C38E.svg" alt="Tested with SeleniumBase" /></a></div> <div><a href="https://seleniumbase.io"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg" alt="SeleniumBase Docs" /></a></div>
1316
- <p><a href="https://pepy.tech/project/seleniumbase" target="_blank"><img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a></p>
1317
-
1318
- <p><div>
1319
- <span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="70" /></a></span>
1320
- <span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="64" /></a></span>
1321
- <span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="52" /></a></span>
1322
- </div></p>
1320
+ <div><a href="https://pepy.tech/project/seleniumbase" target="_blank"><img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a></div>
1321
+ <div><a href="https://github.com/seleniumbase/SeleniumBase/stargazers"><img src="https://img.shields.io/github/stars/seleniumbase/seleniumbase.svg?color=19A57B" title="Stargazers" /></a></div>
1323
1322
 
1324
1323
  --------
1325
1324
 
1326
1325
  <p><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/super_logo_sb.png" alt="SeleniumBase" title="SeleniumBase" width="300" /></a></p>
1327
- <p><a href="https://www.python.org/downloads/" target="_blank"><img src="https://img.shields.io/pypi/pyversions/seleniumbase.svg?color=22AAEE&logo=python&logoColor=FEDC54" title="Supported Python Versions" /></a></p>
1326
+ <p><a href="https://pypi.org/project/seleniumbase/" target="_blank"><img src="https://img.shields.io/pypi/pyversions/seleniumbase.svg?color=22AAEE&logo=python&logoColor=FEDC54" title="Supported Python Versions" /></a></p>
@@ -1,4 +1,5 @@
1
1
  from seleniumbase import BaseCase
2
+ BaseCase.main(__name__, __file__)
2
3
 
3
4
 
4
5
  class DialogBoxTests(BaseCase):
@@ -17,7 +17,7 @@ class 私のテストクラス(セレニウムテストケース):
17
17
  self.要素を確認する('img[alt="握り寿司"]')
18
18
  self.JS入力("#searchInput", "レゴランド・ジャパン")
19
19
  self.クリックして("#searchform button")
20
- self.要素を確認する('img[alt*="LEGOLAND JAPAN"]')
20
+ self.要素を確認する('img[src*="LEGOLAND_JAPAN"]')
21
21
  self.リンクテキストを確認する("名古屋城")
22
22
  self.リンクテキストをクリックします("テーマパーク")
23
23
  self.テキストを確認する("テーマパーク", "#firstHeading")
@@ -11,7 +11,7 @@ class 테스트_클래스(셀레늄_테스트_케이스):
11
11
  self.JS_입력("#searchform input", "김치")
12
12
  self.클릭("#searchform button")
13
13
  self.텍스트_확인("김치", "#firstHeading")
14
- self.요소_확인('img[alt="Various kimchi.jpg"]')
14
+ self.요소_확인('img[src*="Various_kimchi.jpg"]')
15
15
  self.링크_텍스트_확인("한국 요리")
16
16
  self.JS_입력("#searchform input", "비빔밥")
17
17
  self.클릭("#searchform button")
@@ -0,0 +1,52 @@
1
+ from pprint import pformat
2
+ from seleniumbase import BaseCase
3
+
4
+ if __name__ == "__main__":
5
+ from pytest import main
6
+ main([__file__, "--uc", "--uc-cdp", "--incognito", "-s"])
7
+
8
+
9
+ class CDPTests(BaseCase):
10
+ def add_cdp_listener(self):
11
+ # (To print everything, use "*". Otherwise select specific headers.)
12
+ # self.driver.add_cdp_listener("*", lambda data: print(pformat(data)))
13
+ self.driver.add_cdp_listener(
14
+ "Network.requestWillBeSentExtraInfo",
15
+ lambda data: print(pformat(data))
16
+ )
17
+
18
+ def verify_success(self):
19
+ self.assert_text("OH YEAH, you passed!", "h1", timeout=6.25)
20
+ self.sleep(2)
21
+
22
+ def fail_me(self):
23
+ self.fail('Selenium was detected! Try using: "pytest --uc"')
24
+
25
+ def test_display_cdp_events(self):
26
+ if not (self.undetectable and self.uc_cdp_events and self.incognito):
27
+ self.get_new_driver(
28
+ undetectable=True, uc_cdp_events=True, incognito=True
29
+ )
30
+ self.add_cdp_listener()
31
+ self.open("https://nowsecure.nl/#relax")
32
+ try:
33
+ self.verify_success()
34
+ except Exception:
35
+ self.clear_all_cookies()
36
+ self.get_new_driver(devtools=True)
37
+ self.add_cdp_listener()
38
+ self.open("https://nowsecure.nl/#relax")
39
+ try:
40
+ self.verify_success()
41
+ except Exception:
42
+ if self.is_element_visible('input[value*="Verify"]'):
43
+ self.click('input[value*="Verify"]')
44
+ elif self.is_element_visible('iframe[title*="challenge"]'):
45
+ self.switch_to_frame('iframe[title*="challenge"]')
46
+ self.click("span.mark")
47
+ else:
48
+ self.fail_me()
49
+ try:
50
+ self.verify_success()
51
+ except Exception:
52
+ self.fail_me()
@@ -5,12 +5,12 @@ from seleniumbase import BaseCase
5
5
 
6
6
  if __name__ == "__main__":
7
7
  from pytest import main
8
- main([__file__, "--uc", "--uc-cdp", "--incognito", "-s"])
8
+ main([__file__, "--uc", "-s"])
9
9
 
10
10
 
11
11
  class UndetectedTest(BaseCase):
12
12
  def verify_success(self):
13
- self.assert_text("OH YEAH, you passed!", "h1", timeout=7.25)
13
+ self.assert_text("OH YEAH, you passed!", "h1", timeout=6.25)
14
14
  self.post_message("Selenium wasn't detected!", duration=2.8)
15
15
  self._print("\n Success! Website did not detect Selenium! ")
16
16
 
@@ -22,14 +22,20 @@ class UndetectedTest(BaseCase):
22
22
  try:
23
23
  self.verify_success()
24
24
  except Exception:
25
- if self.is_element_visible('input[value*="Verify"]'):
26
- self.click('input[value*="Verify"]')
27
- elif self.is_element_visible('iframe[title*="challenge"]'):
28
- self.switch_to_frame('iframe[title*="challenge"]')
29
- self.click("span.mark")
30
- else:
31
- self.fail_me()
25
+ self.clear_all_cookies()
26
+ self.get_new_driver(devtools=True)
27
+ self.open("https://nowsecure.nl/#relax")
32
28
  try:
33
29
  self.verify_success()
34
30
  except Exception:
35
- self.fail_me()
31
+ if self.is_element_visible('input[value*="Verify"]'):
32
+ self.click('input[value*="Verify"]')
33
+ elif self.is_element_visible('iframe[title*="challenge"]'):
34
+ self.switch_to_frame('iframe[title*="challenge"]')
35
+ self.click("span.mark")
36
+ else:
37
+ self.fail_me()
38
+ try:
39
+ self.verify_success()
40
+ except Exception:
41
+ self.fail_me()
@@ -546,7 +546,7 @@ class 私のテストクラス(セレニウムテストケース):
546
546
  self.要素を確認する('img[alt="握り寿司"]')
547
547
  self.JS入力("#searchInput", "レゴランド・ジャパン")
548
548
  self.クリックして("#searchform button")
549
- self.要素を確認する('img[alt*="LEGOLAND JAPAN"]')
549
+ self.要素を確認する('img[src*="LEGOLAND_JAPAN"]')
550
550
  self.リンクテキストを確認する("名古屋城")
551
551
  self.リンクテキストをクリックします("テーマパーク")
552
552
  self.テキストを確認する("テーマパーク", "#firstHeading")
@@ -572,7 +572,7 @@ class 테스트_클래스(셀레늄_테스트_케이스):
572
572
  self.JS_입력("#searchform input", "김치")
573
573
  self.클릭("#searchform button")
574
574
  self.텍스트_확인("김치", "#firstHeading")
575
- self.요소_확인('img[alt="Various kimchi.jpg"]')
575
+ self.요소_확인('img[src*="Various_kimchi.jpg"]')
576
576
  self.링크_텍스트_확인("한국 요리")
577
577
  self.JS_입력("#searchform input", "비빔밥")
578
578
  self.클릭("#searchform button")
@@ -6,7 +6,7 @@ pkginfo>=1.9.6
6
6
  readme-renderer>=40.0
7
7
  pymdown-extensions>=10.0.1
8
8
  importlib-metadata>=6.8.0
9
- pipdeptree>=2.9.4
9
+ pipdeptree>=2.9.5
10
10
  bleach>=6.0.0
11
11
  docutils>=0.20.1
12
12
  python-dateutil>=2.8.2
@@ -30,7 +30,7 @@ pynose==1.4.6
30
30
  sniffio==1.3.0;python_version>="3.7"
31
31
  h11==0.14.0;python_version>="3.7"
32
32
  outcome==1.2.0;python_version>="3.7"
33
- trio==0.22.1;python_version>="3.7"
33
+ trio==0.22.2;python_version>="3.7"
34
34
  trio-websocket==0.10.3;python_version>="3.7"
35
35
  wsproto==1.2.0;python_version>="3.7"
36
36
  selenium==3.141.0;python_version<"3.7"
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.15.15"
@@ -1,5 +1,6 @@
1
1
  """ SeleniumBase Exceptions
2
2
  NoSuchFileException => Called when self.assert_downloaded_file(...) fails.
3
+ NoSuchOptionException => Called when select_option_by_*() lacks the option.
3
4
  NotConnectedException => Called when Internet is not reachable when needed.
4
5
  NotUsingChromeException => Used by Chrome-only methods if not using Chrome.
5
6
  NotUsingChromiumException => Used by Chromium-only methods if not Chromium.
@@ -15,6 +16,10 @@ class NoSuchFileException(Exception):
15
16
  pass
16
17
 
17
18
 
19
+ class NoSuchOptionException(Exception):
20
+ pass
21
+
22
+
18
23
  class NotConnectedException(Exception):
19
24
  pass
20
25
 
@@ -183,8 +183,8 @@ def main():
183
183
  chart_options = '"circular", "barras", "columnas", "líneas", "área"'
184
184
 
185
185
  import_line = "from seleniumbase import BaseCase"
186
+ main_line = "BaseCase.main(__name__, __file__)"
186
187
  parent_class = "BaseCase"
187
- class_line = "class MyTestClass(BaseCase):"
188
188
  if language != "English":
189
189
  from seleniumbase.translate.master_dict import MD_F
190
190
 
@@ -196,6 +196,7 @@ def main():
196
196
  add_slide = '"<p>Chart Demo</p>" + self.extract_chart()'
197
197
  data = []
198
198
  data.append("%s" % import_line)
199
+ data.append("%s" % main_line)
199
200
  data.append("")
200
201
  data.append("")
201
202
  data.append("%s" % class_line)
@@ -204,12 +205,12 @@ def main():
204
205
  data.append("")
205
206
  data.append(" # %s => %s" % (select_option, chart_options))
206
207
  data.append(" self.create_pie_chart(%s)" % chart_settings)
207
- data.append(' self.add_data_point("%s A", 50)' % item)
208
- data.append(' self.add_data_point("%s B", 40)' % item)
209
- data.append(' self.add_data_point("%s C", 35)' % item)
210
- data.append(' self.add_data_point("%s D", 30)' % item)
211
- data.append(' self.add_data_point("%s E", 25)' % item)
212
- data.append(' self.add_data_point("%s F", 20)' % item)
208
+ data.append(' self.add_data_point("%s A", 36)' % item)
209
+ data.append(' self.add_data_point("%s B", 33)' % item)
210
+ data.append(' self.add_data_point("%s C", 27)' % item)
211
+ data.append(' self.add_data_point("%s D", 21)' % item)
212
+ data.append(' self.add_data_point("%s E", 18)' % item)
213
+ data.append(' self.add_data_point("%s F", 15)' % item)
213
214
  data.append(" self.add_slide(%s)" % add_slide)
214
215
  data.append("")
215
216
  data.append(' self.begin_presentation(filename="%s")' % html_name)
@@ -243,6 +244,10 @@ def main():
243
244
  # Example: self.assert_true("Name" in self.get_title())
244
245
  line = new_line
245
246
  continue
247
+ if main_line in line:
248
+ new_main = "%s.main(__name__, __file__)" % parent_class
249
+ new_line = line.replace(main_line, new_main)
250
+ found_swap = True
246
251
  if found_swap:
247
252
  if new_line.endswith(" # noqa"): # Remove flake8 skip
248
253
  new_line = new_line[0 : -len(" # noqa")]
@@ -231,15 +231,14 @@ def main():
231
231
  url = "data:text/html,<p>%s<br><input>" % hello
232
232
 
233
233
  import_line = "from seleniumbase import BaseCase"
234
+ main_line = "BaseCase.main(__name__, __file__)"
234
235
  parent_class = "BaseCase"
235
- class_line = "class MyTestClass(BaseCase):"
236
236
  if language != "English":
237
237
  from seleniumbase.translate.master_dict import MD_F
238
238
 
239
239
  import_line = MD_F.get_import_line(language)
240
240
  parent_class = MD_F.get_lang_parent_class(language)
241
241
  class_line = "class %s(%s):" % (class_name, parent_class)
242
- main_line = "BaseCase.main(__name__, __file__)"
243
242
 
244
243
  data = []
245
244
  data.append("%s" % import_line)
@@ -194,8 +194,8 @@ def main():
194
194
  class_name = "MiClaseDePrueba"
195
195
 
196
196
  import_line = "from seleniumbase import BaseCase"
197
+ main_line = "BaseCase.main(__name__, __file__)"
197
198
  parent_class = "BaseCase"
198
- class_line = "class MyTestClass(BaseCase):"
199
199
  if language != "English":
200
200
  from seleniumbase.translate.master_dict import MD_F
201
201
 
@@ -223,6 +223,7 @@ def main():
223
223
 
224
224
  data = []
225
225
  data.append("%s" % import_line)
226
+ data.append("%s" % main_line)
226
227
  data.append("")
227
228
  data.append("")
228
229
  data.append("%s" % class_line)
@@ -262,6 +263,10 @@ def main():
262
263
  # Example: self.assert_true("Name" in self.get_title())
263
264
  line = new_line
264
265
  continue
266
+ if main_line in line:
267
+ new_main = "%s.main(__name__, __file__)" % parent_class
268
+ new_line = line.replace(main_line, new_main)
269
+ found_swap = True
265
270
  if found_swap:
266
271
  if new_line.endswith(" # noqa"): # Remove flake8 skip
267
272
  new_line = new_line[0 : -len(" # noqa")]