seleniumbase 4.34.7__tar.gz → 4.34.9__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. {seleniumbase-4.34.7/seleniumbase.egg-info → seleniumbase-4.34.9}/PKG-INFO +1 -1
  2. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__version__.py +1 -1
  3. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/browser_launcher.py +21 -0
  4. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/sb_cdp.py +7 -2
  5. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/base_case.py +3 -3
  6. {seleniumbase-4.34.7/examples/migration → seleniumbase-4.34.9/seleniumbase/js_code}/__init__.py +0 -0
  7. {seleniumbase-4.34.7/examples/offline_examples → seleniumbase-4.34.9/seleniumbase/resources}/__init__.py +0 -0
  8. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/__init__.py +24 -14
  9. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/cdp_util.py +22 -3
  10. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/tab.py +4 -0
  11. {seleniumbase-4.34.7 → seleniumbase-4.34.9/seleniumbase.egg-info}/PKG-INFO +1 -1
  12. seleniumbase-4.34.9/seleniumbase.egg-info/SOURCES.txt +154 -0
  13. seleniumbase-4.34.7/examples/basic_test.py +0 -20
  14. seleniumbase-4.34.7/examples/behave_bdd/features/environment.py +0 -11
  15. seleniumbase-4.34.7/examples/behave_bdd/features/steps/calculator.py +0 -144
  16. seleniumbase-4.34.7/examples/behave_bdd/features/steps/fail_page.py +0 -11
  17. seleniumbase-4.34.7/examples/behave_bdd/features/steps/imported.py +0 -1
  18. seleniumbase-4.34.7/examples/behave_bdd/features/steps/swag_labs.py +0 -161
  19. seleniumbase-4.34.7/examples/boilerplates/base_test_case.py +0 -49
  20. seleniumbase-4.34.7/examples/boilerplates/boilerplate_test.py +0 -14
  21. seleniumbase-4.34.7/examples/boilerplates/classic_obj_test.py +0 -18
  22. seleniumbase-4.34.7/examples/boilerplates/page_objects.py +0 -45
  23. seleniumbase-4.34.7/examples/boilerplates/samples/file_parsing/parse_files.py +0 -55
  24. seleniumbase-4.34.7/examples/boilerplates/samples/google_objects.py +0 -12
  25. seleniumbase-4.34.7/examples/boilerplates/samples/google_test.py +0 -29
  26. seleniumbase-4.34.7/examples/boilerplates/samples/sb_swag_test.py +0 -18
  27. seleniumbase-4.34.7/examples/boilerplates/samples/swag_labs_test.py +0 -20
  28. seleniumbase-4.34.7/examples/boilerplates/samples/test_page_objects.py +0 -50
  29. seleniumbase-4.34.7/examples/boilerplates/sb_fixture_test.py +0 -16
  30. seleniumbase-4.34.7/examples/capabilities/mac_cap_file.py +0 -6
  31. seleniumbase-4.34.7/examples/capabilities/sample_cap_file_BS.py +0 -12
  32. seleniumbase-4.34.7/examples/capabilities/sample_cap_file_SL.py +0 -8
  33. seleniumbase-4.34.7/examples/capabilities/selenoid_cap_file.py +0 -14
  34. seleniumbase-4.34.7/examples/capabilities/win10_cap_file.py +0 -6
  35. seleniumbase-4.34.7/examples/chart_maker/chart_presentation.py +0 -37
  36. seleniumbase-4.34.7/examples/chart_maker/my_chart.py +0 -13
  37. seleniumbase-4.34.7/examples/chart_maker/pie_charts.py +0 -45
  38. seleniumbase-4.34.7/examples/chart_maker/test_area_chart.py +0 -19
  39. seleniumbase-4.34.7/examples/chart_maker/test_display_chart.py +0 -33
  40. seleniumbase-4.34.7/examples/chart_maker/test_line_chart.py +0 -19
  41. seleniumbase-4.34.7/examples/chart_maker/test_multi_series.py +0 -48
  42. seleniumbase-4.34.7/examples/chart_maker/test_save_chart.py +0 -33
  43. seleniumbase-4.34.7/examples/coffee_cart_tests.py +0 -91
  44. seleniumbase-4.34.7/examples/custom_settings.py +0 -124
  45. seleniumbase-4.34.7/examples/desktop_apps/recorder.py +0 -12
  46. seleniumbase-4.34.7/examples/dialog_boxes/dialog_box_tour.py +0 -123
  47. seleniumbase-4.34.7/examples/edge_test.py +0 -31
  48. seleniumbase-4.34.7/examples/github_test.py +0 -19
  49. seleniumbase-4.34.7/examples/gui_test_runner.py +0 -121
  50. seleniumbase-4.34.7/examples/hack_the_planet.py +0 -342
  51. seleniumbase-4.34.7/examples/handle_alert_test.py +0 -22
  52. seleniumbase-4.34.7/examples/iframe_tests.py +0 -52
  53. seleniumbase-4.34.7/examples/locale_code_test.py +0 -21
  54. seleniumbase-4.34.7/examples/master_qa/basic_masterqa_test_0.py +0 -15
  55. seleniumbase-4.34.7/examples/master_qa/masterqa_test_1.py +0 -27
  56. seleniumbase-4.34.7/examples/migration/protractor/example_test.py +0 -24
  57. seleniumbase-4.34.7/examples/migration/protractor/input_test.py +0 -10
  58. seleniumbase-4.34.7/examples/migration/protractor/mat_paginator_test.py +0 -27
  59. seleniumbase-4.34.7/examples/migration/raw_selenium/flaky_messy_raw.py +0 -73
  60. seleniumbase-4.34.7/examples/migration/raw_selenium/long_messy_raw.py +0 -97
  61. seleniumbase-4.34.7/examples/migration/raw_selenium/messy_raw.py +0 -85
  62. seleniumbase-4.34.7/examples/migration/raw_selenium/refined_raw.py +0 -127
  63. seleniumbase-4.34.7/examples/migration/raw_selenium/simple_sbase.py +0 -21
  64. seleniumbase-4.34.7/examples/my_first_test.py +0 -150
  65. seleniumbase-4.34.7/examples/nth_child_test.py +0 -37
  66. seleniumbase-4.34.7/examples/offline_examples/load_html_test.py +0 -21
  67. seleniumbase-4.34.7/examples/offline_examples/test_demo_page.py +0 -116
  68. seleniumbase-4.34.7/examples/offline_examples/test_extended_driver.py +0 -61
  69. seleniumbase-4.34.7/examples/offline_examples/test_handle_alerts.py +0 -22
  70. seleniumbase-4.34.7/examples/offline_examples/test_request_fixture.py +0 -26
  71. seleniumbase-4.34.7/examples/offline_examples/test_user_agent.py +0 -42
  72. seleniumbase-4.34.7/examples/old_wordle_script.py +0 -125
  73. seleniumbase-4.34.7/examples/parameterized_test.py +0 -19
  74. seleniumbase-4.34.7/examples/performance_test.py +0 -52
  75. seleniumbase-4.34.7/examples/presenter/core_presentation.py +0 -96
  76. seleniumbase-4.34.7/examples/presenter/edge_presentation.py +0 -716
  77. seleniumbase-4.34.7/examples/presenter/fundamentals.py +0 -416
  78. seleniumbase-4.34.7/examples/presenter/multi_uc.py +0 -24
  79. seleniumbase-4.34.7/examples/presenter/my_presentation.py +0 -138
  80. seleniumbase-4.34.7/examples/presenter/py_virtual_envs.py +0 -194
  81. seleniumbase-4.34.7/examples/presenter/uc_presentation.py +0 -560
  82. seleniumbase-4.34.7/examples/presenter/uc_presentation_3.py +0 -783
  83. seleniumbase-4.34.7/examples/proxy_test.py +0 -42
  84. seleniumbase-4.34.7/examples/rate_limiting_test.py +0 -21
  85. seleniumbase-4.34.7/examples/raw_ahrefs.py +0 -17
  86. seleniumbase-4.34.7/examples/raw_antibot_login.py +0 -15
  87. seleniumbase-4.34.7/examples/raw_bing_captcha.py +0 -6
  88. seleniumbase-4.34.7/examples/raw_block.py +0 -11
  89. seleniumbase-4.34.7/examples/raw_brotector_captcha.py +0 -9
  90. seleniumbase-4.34.7/examples/raw_call.py +0 -9
  91. seleniumbase-4.34.7/examples/raw_cdp_logging.py +0 -12
  92. seleniumbase-4.34.7/examples/raw_cf.py +0 -14
  93. seleniumbase-4.34.7/examples/raw_cookies.py +0 -19
  94. seleniumbase-4.34.7/examples/raw_detection.py +0 -12
  95. seleniumbase-4.34.7/examples/raw_driver_context.py +0 -20
  96. seleniumbase-4.34.7/examples/raw_driver_manager.py +0 -22
  97. seleniumbase-4.34.7/examples/raw_file_call.py +0 -22
  98. seleniumbase-4.34.7/examples/raw_form_turnstile.py +0 -20
  99. seleniumbase-4.34.7/examples/raw_games.py +0 -14
  100. seleniumbase-4.34.7/examples/raw_gui_click.py +0 -17
  101. seleniumbase-4.34.7/examples/raw_hobbit.py +0 -13
  102. seleniumbase-4.34.7/examples/raw_login_context.py +0 -12
  103. seleniumbase-4.34.7/examples/raw_login_driver.py +0 -15
  104. seleniumbase-4.34.7/examples/raw_login_sb.py +0 -12
  105. seleniumbase-4.34.7/examples/raw_main_call.py +0 -20
  106. seleniumbase-4.34.7/examples/raw_mobile.py +0 -17
  107. seleniumbase-4.34.7/examples/raw_multi_drivers.py +0 -27
  108. seleniumbase-4.34.7/examples/raw_nopecha.py +0 -8
  109. seleniumbase-4.34.7/examples/raw_order_tickets.py +0 -8
  110. seleniumbase-4.34.7/examples/raw_parameter_script.py +0 -144
  111. seleniumbase-4.34.7/examples/raw_performance_logs.py +0 -7
  112. seleniumbase-4.34.7/examples/raw_pixelscan.py +0 -19
  113. seleniumbase-4.34.7/examples/raw_pyautogui.py +0 -17
  114. seleniumbase-4.34.7/examples/raw_recaptcha.py +0 -10
  115. seleniumbase-4.34.7/examples/raw_robot.py +0 -17
  116. seleniumbase-4.34.7/examples/raw_sb.py +0 -14
  117. seleniumbase-4.34.7/examples/raw_test_scripts.py +0 -22
  118. seleniumbase-4.34.7/examples/raw_turnstile.py +0 -9
  119. seleniumbase-4.34.7/examples/raw_uc_mode.py +0 -12
  120. seleniumbase-4.34.7/examples/sb_fixture_tests.py +0 -25
  121. seleniumbase-4.34.7/examples/shadow_root_test.py +0 -23
  122. seleniumbase-4.34.7/examples/swag_labs_user_tests.py +0 -94
  123. seleniumbase-4.34.7/examples/test_3d_apis.py +0 -17
  124. seleniumbase-4.34.7/examples/test_apple_site.py +0 -36
  125. seleniumbase-4.34.7/examples/test_assert_elements.py +0 -14
  126. seleniumbase-4.34.7/examples/test_calculator.py +0 -16
  127. seleniumbase-4.34.7/examples/test_canvas.py +0 -49
  128. seleniumbase-4.34.7/examples/test_cdp_ad_blocking.py +0 -31
  129. seleniumbase-4.34.7/examples/test_checkboxes.py +0 -20
  130. seleniumbase-4.34.7/examples/test_chinese_pdf.py +0 -20
  131. seleniumbase-4.34.7/examples/test_chromedriver.py +0 -54
  132. seleniumbase-4.34.7/examples/test_coffee_cart.py +0 -23
  133. seleniumbase-4.34.7/examples/test_console_logging.py +0 -15
  134. seleniumbase-4.34.7/examples/test_contains_selector.py +0 -13
  135. seleniumbase-4.34.7/examples/test_cycle_elements.py +0 -16
  136. seleniumbase-4.34.7/examples/test_decryption.py +0 -21
  137. seleniumbase-4.34.7/examples/test_deferred_asserts.py +0 -23
  138. seleniumbase-4.34.7/examples/test_demo_site.py +0 -119
  139. seleniumbase-4.34.7/examples/test_detect_404s.py +0 -9
  140. seleniumbase-4.34.7/examples/test_docs_site.py +0 -22
  141. seleniumbase-4.34.7/examples/test_double_click.py +0 -21
  142. seleniumbase-4.34.7/examples/test_download_files.py +0 -106
  143. seleniumbase-4.34.7/examples/test_download_images.py +0 -58
  144. seleniumbase-4.34.7/examples/test_drag_and_drop.py +0 -22
  145. seleniumbase-4.34.7/examples/test_error_page.py +0 -17
  146. seleniumbase-4.34.7/examples/test_event_firing.py +0 -39
  147. seleniumbase-4.34.7/examples/test_fail.py +0 -16
  148. seleniumbase-4.34.7/examples/test_geolocation.py +0 -45
  149. seleniumbase-4.34.7/examples/test_get_coffee.py +0 -20
  150. seleniumbase-4.34.7/examples/test_get_locale_code.py +0 -12
  151. seleniumbase-4.34.7/examples/test_get_pdf_text.py +0 -13
  152. seleniumbase-4.34.7/examples/test_get_user_agent.py +0 -11
  153. seleniumbase-4.34.7/examples/test_hack_search.py +0 -33
  154. seleniumbase-4.34.7/examples/test_highlight_elements.py +0 -11
  155. seleniumbase-4.34.7/examples/test_image_saving.py +0 -83
  156. seleniumbase-4.34.7/examples/test_inspect_html.py +0 -11
  157. seleniumbase-4.34.7/examples/test_login.py +0 -19
  158. seleniumbase-4.34.7/examples/test_markers.py +0 -37
  159. seleniumbase-4.34.7/examples/test_mfa_login.py +0 -17
  160. seleniumbase-4.34.7/examples/test_multiple_drivers.py +0 -19
  161. seleniumbase-4.34.7/examples/test_null.py +0 -7
  162. seleniumbase-4.34.7/examples/test_override_driver.py +0 -31
  163. seleniumbase-4.34.7/examples/test_override_sb_fixture.py +0 -87
  164. seleniumbase-4.34.7/examples/test_parse_soup.py +0 -39
  165. seleniumbase-4.34.7/examples/test_pdf_asserts.py +0 -19
  166. seleniumbase-4.34.7/examples/test_pytest_parametrize.py +0 -24
  167. seleniumbase-4.34.7/examples/test_repeat_tests.py +0 -36
  168. seleniumbase-4.34.7/examples/test_request_sb_fixture.py +0 -22
  169. seleniumbase-4.34.7/examples/test_save_screenshots.py +0 -40
  170. seleniumbase-4.34.7/examples/test_sb_fixture.py +0 -15
  171. seleniumbase-4.34.7/examples/test_scrape_bing.py +0 -30
  172. seleniumbase-4.34.7/examples/test_select_options.py +0 -41
  173. seleniumbase-4.34.7/examples/test_shadow_dom.py +0 -77
  174. seleniumbase-4.34.7/examples/test_show_file_choosers.py +0 -28
  175. seleniumbase-4.34.7/examples/test_simple_login.py +0 -15
  176. seleniumbase-4.34.7/examples/test_skype_site.py +0 -28
  177. seleniumbase-4.34.7/examples/test_suite.py +0 -31
  178. seleniumbase-4.34.7/examples/test_swag_labs.py +0 -81
  179. seleniumbase-4.34.7/examples/test_tinymce.py +0 -29
  180. seleniumbase-4.34.7/examples/test_todomvc.py +0 -29
  181. seleniumbase-4.34.7/examples/test_url_asserts.py +0 -12
  182. seleniumbase-4.34.7/examples/test_usefixtures.py +0 -18
  183. seleniumbase-4.34.7/examples/test_verify_chromedriver.py +0 -33
  184. seleniumbase-4.34.7/examples/test_window_switching.py +0 -22
  185. seleniumbase-4.34.7/examples/test_xfail.py +0 -14
  186. seleniumbase-4.34.7/examples/test_xkcd.py +0 -16
  187. seleniumbase-4.34.7/examples/time_limit_test.py +0 -28
  188. seleniumbase-4.34.7/examples/tour_examples/bootstrap_google_tour.py +0 -87
  189. seleniumbase-4.34.7/examples/tour_examples/bootstrap_xkcd_tour.py +0 -20
  190. seleniumbase-4.34.7/examples/tour_examples/driverjs_maps_tour.py +0 -63
  191. seleniumbase-4.34.7/examples/tour_examples/google_tour.py +0 -95
  192. seleniumbase-4.34.7/examples/tour_examples/hopscotch_google_tour.py +0 -87
  193. seleniumbase-4.34.7/examples/tour_examples/introjs_google_tour.py +0 -88
  194. seleniumbase-4.34.7/examples/tour_examples/maps_introjs_tour.py +0 -64
  195. seleniumbase-4.34.7/examples/tour_examples/octocat_tour.py +0 -23
  196. seleniumbase-4.34.7/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -14
  197. seleniumbase-4.34.7/examples/tour_examples/shepherd_google_tour.py +0 -93
  198. seleniumbase-4.34.7/examples/tour_examples/xkcd_tour.py +0 -21
  199. seleniumbase-4.34.7/examples/translations/chinese_test_1.py +0 -28
  200. seleniumbase-4.34.7/examples/translations/dutch_test_1.py +0 -22
  201. seleniumbase-4.34.7/examples/translations/english_test_1.py +0 -18
  202. seleniumbase-4.34.7/examples/translations/french_test_1.py +0 -23
  203. seleniumbase-4.34.7/examples/translations/italian_test_1.py +0 -22
  204. seleniumbase-4.34.7/examples/translations/japanese_test_1.py +0 -23
  205. seleniumbase-4.34.7/examples/translations/korean_test_1.py +0 -21
  206. seleniumbase-4.34.7/examples/translations/portuguese_test_1.py +0 -25
  207. seleniumbase-4.34.7/examples/translations/russian_test_1.py +0 -22
  208. seleniumbase-4.34.7/examples/translations/spanish_test_1.py +0 -22
  209. seleniumbase-4.34.7/examples/uc_cdp_events.py +0 -29
  210. seleniumbase-4.34.7/examples/unit_tests/verify_framework.py +0 -180
  211. seleniumbase-4.34.7/examples/upgrade_chromedriver.py +0 -99
  212. seleniumbase-4.34.7/examples/upload_file_test.py +0 -21
  213. seleniumbase-4.34.7/examples/user_agent_test.py +0 -56
  214. seleniumbase-4.34.7/examples/verify_undetected.py +0 -17
  215. seleniumbase-4.34.7/examples/visual_testing/layout_test.py +0 -33
  216. seleniumbase-4.34.7/examples/visual_testing/python_home_test.py +0 -12
  217. seleniumbase-4.34.7/examples/visual_testing/test_layout_fail.py +0 -37
  218. seleniumbase-4.34.7/examples/visual_testing/xkcd_visual_test.py +0 -13
  219. seleniumbase-4.34.7/examples/wordle_test.py +0 -106
  220. seleniumbase-4.34.7/examples/xpath_test.py +0 -13
  221. seleniumbase-4.34.7/examples/youtube_search_test.py +0 -30
  222. seleniumbase-4.34.7/integrations/behave/features/__init__.py +0 -0
  223. seleniumbase-4.34.7/integrations/behave/features/environment.py +0 -11
  224. seleniumbase-4.34.7/integrations/behave/features/steps/__init__.py +0 -0
  225. seleniumbase-4.34.7/integrations/behave/features/steps/calculator.py +0 -144
  226. seleniumbase-4.34.7/integrations/behave/features/steps/fail_page.py +0 -11
  227. seleniumbase-4.34.7/integrations/behave/features/steps/real_world.py +0 -100
  228. seleniumbase-4.34.7/integrations/behave/features/steps/swag_labs.py +0 -168
  229. seleniumbase-4.34.7/integrations/brython/index.py +0 -5
  230. seleniumbase-4.34.7/integrations/node_js/__init__.py +0 -0
  231. seleniumbase-4.34.7/integrations/node_js/my_first_test.py +0 -25
  232. seleniumbase-4.34.7/integrations/node_js/test_demo_site.py +0 -119
  233. seleniumbase-4.34.7/mkdocs_build/prepare.py +0 -201
  234. seleniumbase-4.34.7/seleniumbase/behave/__init__.py +0 -0
  235. seleniumbase-4.34.7/seleniumbase/common/__init__.py +0 -0
  236. seleniumbase-4.34.7/seleniumbase/config/__init__.py +0 -0
  237. seleniumbase-4.34.7/seleniumbase/console_scripts/__init__.py +0 -0
  238. seleniumbase-4.34.7/seleniumbase/core/__init__.py +0 -0
  239. seleniumbase-4.34.7/seleniumbase/drivers/__init__.py +0 -0
  240. seleniumbase-4.34.7/seleniumbase/extensions/__init__.py +0 -0
  241. seleniumbase-4.34.7/seleniumbase/fixtures/__init__.py +0 -0
  242. seleniumbase-4.34.7/seleniumbase/js_code/__init__.py +0 -0
  243. seleniumbase-4.34.7/seleniumbase/masterqa/__init__.py +0 -0
  244. seleniumbase-4.34.7/seleniumbase/plugins/__init__.py +0 -0
  245. seleniumbase-4.34.7/seleniumbase/resources/__init__.py +0 -0
  246. seleniumbase-4.34.7/seleniumbase/utilities/__init__.py +0 -0
  247. seleniumbase-4.34.7/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  248. seleniumbase-4.34.7/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  249. seleniumbase-4.34.7/seleniumbase.egg-info/SOURCES.txt +0 -391
  250. seleniumbase-4.34.7/site/prepare.py +0 -201
  251. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/.gitignore +0 -0
  252. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/LICENSE +0 -0
  253. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/MANIFEST.in +0 -0
  254. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/README.md +0 -0
  255. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/install.sh +0 -0
  256. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/pyproject.toml +0 -0
  257. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/pytest.ini +0 -0
  258. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/requirements.txt +0 -0
  259. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/__init__.py +0 -0
  260. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/__main__.py +0 -0
  261. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/steps.py +0 -0
  262. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__init__.py +0 -0
  263. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__main__.py +0 -0
  264. {seleniumbase-4.34.7/examples → seleniumbase-4.34.9/seleniumbase/behave}/__init__.py +0 -0
  265. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/behave_helper.py +0 -0
  266. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/behave_sb.py +0 -0
  267. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/steps.py +0 -0
  268. {seleniumbase-4.34.7/examples/behave_bdd → seleniumbase-4.34.9/seleniumbase/common}/__init__.py +0 -0
  269. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/decorators.py +0 -0
  270. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/encryption.py +0 -0
  271. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/exceptions.py +0 -0
  272. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/obfuscate.py +0 -0
  273. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/unobfuscate.py +0 -0
  274. {seleniumbase-4.34.7/examples/behave_bdd/features → seleniumbase-4.34.9/seleniumbase/config}/__init__.py +0 -0
  275. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/ad_block_list.py +0 -0
  276. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/proxy_list.py +0 -0
  277. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/settings.py +0 -0
  278. {seleniumbase-4.34.7/examples/behave_bdd/features/steps → seleniumbase-4.34.9/seleniumbase/console_scripts}/__init__.py +0 -0
  279. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/logo_helper.py +0 -0
  280. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/rich_helper.py +0 -0
  281. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/run.py +0 -0
  282. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  283. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  284. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_commander.py +0 -0
  285. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_install.py +0 -0
  286. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  287. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  288. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  289. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  290. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  291. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  292. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_print.py +0 -0
  293. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  294. {seleniumbase-4.34.7/examples/boilerplates → seleniumbase-4.34.9/seleniumbase/core}/__init__.py +0 -0
  295. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/application_manager.py +0 -0
  296. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/capabilities_parser.py +0 -0
  297. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/colored_traceback.py +0 -0
  298. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/create_db_tables.sql +0 -0
  299. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/detect_b_ver.py +0 -0
  300. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/download_helper.py +0 -0
  301. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/encoded_images.py +0 -0
  302. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/jqc_helper.py +0 -0
  303. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/log_helper.py +0 -0
  304. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/mysql.py +0 -0
  305. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/proxy_helper.py +0 -0
  306. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/recorder_helper.py +0 -0
  307. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/report_helper.py +0 -0
  308. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/s3_manager.py +0 -0
  309. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/sb_driver.py +0 -0
  310. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/session_helper.py +0 -0
  311. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/settings_parser.py +0 -0
  312. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/style_sheet.py +0 -0
  313. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/testcase_manager.py +0 -0
  314. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/tour_helper.py +0 -0
  315. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/visual_helper.py +0 -0
  316. {seleniumbase-4.34.7/examples/boilerplates/samples → seleniumbase-4.34.9/seleniumbase/drivers}/__init__.py +0 -0
  317. {seleniumbase-4.34.7/examples/boilerplates/samples/file_parsing → seleniumbase-4.34.9/seleniumbase/extensions}/__init__.py +0 -0
  318. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/ad_block.zip +0 -0
  319. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/disable_csp.zip +0 -0
  320. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/recorder.zip +0 -0
  321. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/sbase_ext.zip +0 -0
  322. {seleniumbase-4.34.7/examples/master_qa → seleniumbase-4.34.9/seleniumbase/fixtures}/__init__.py +0 -0
  323. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/constants.py +0 -0
  324. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  325. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/errors.py +0 -0
  326. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/js_utils.py +0 -0
  327. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_actions.py +0 -0
  328. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_utils.py +0 -0
  329. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/shared_utils.py +0 -0
  330. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/unittest_helper.py +0 -0
  331. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/words.py +0 -0
  332. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  333. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/active_css_js.py +0 -0
  334. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/live_js.py +0 -0
  335. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/recorder_js.py +0 -0
  336. {seleniumbase-4.34.7/examples/migration/protractor → seleniumbase-4.34.9/seleniumbase/masterqa}/__init__.py +0 -0
  337. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/masterqa/master_qa.py +0 -0
  338. {seleniumbase-4.34.7/examples/migration/raw_selenium → seleniumbase-4.34.9/seleniumbase/plugins}/__init__.py +0 -0
  339. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/base_plugin.py +0 -0
  340. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/basic_test_info.py +0 -0
  341. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  342. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/driver_manager.py +0 -0
  343. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/page_source.py +0 -0
  344. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/pytest_plugin.py +0 -0
  345. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  346. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/sb_manager.py +0 -0
  347. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/screen_shots.py +0 -0
  348. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/selenium_plugin.py +0 -0
  349. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/__init__.py +0 -0
  350. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/chinese.py +0 -0
  351. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/dutch.py +0 -0
  352. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/french.py +0 -0
  353. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/italian.py +0 -0
  354. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/japanese.py +0 -0
  355. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/korean.py +0 -0
  356. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/master_dict.py +0 -0
  357. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/portuguese.py +0 -0
  358. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/russian.py +0 -0
  359. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/spanish.py +0 -0
  360. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/translator.py +0 -0
  361. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp.py +0 -0
  362. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  363. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  364. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  365. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  366. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  367. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  368. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/dprocess.py +0 -0
  369. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/options.py +0 -0
  370. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/patcher.py +0 -0
  371. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/reactor.py +0 -0
  372. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/webelement.py +0 -0
  373. {seleniumbase-4.34.7/examples/tour_examples/recordings → seleniumbase-4.34.9/seleniumbase/utilities}/__init__.py +0 -0
  374. {seleniumbase-4.34.7/examples/visual_testing → seleniumbase-4.34.9/seleniumbase/utilities/selenium_grid}/__init__.py +0 -0
  375. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  376. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  377. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  378. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  379. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  380. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  381. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  382. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  383. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  384. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  385. {seleniumbase-4.34.7/integrations → seleniumbase-4.34.9/seleniumbase/utilities/selenium_ide}/__init__.py +0 -0
  386. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  387. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/dependency_links.txt +0 -0
  388. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/entry_points.txt +0 -0
  389. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/requires.txt +0 -0
  390. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/top_level.txt +0 -0
  391. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/setup.cfg +0 -0
  392. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/setup.py +0 -0
  393. {seleniumbase-4.34.7 → seleniumbase-4.34.9}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.34.7
3
+ Version: 4.34.9
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
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.34.7"
2
+ __version__ = "4.34.9"
@@ -1251,6 +1251,10 @@ def _uc_gui_click_captcha(
1251
1251
  )
1252
1252
  ):
1253
1253
  frame = '[data-testid*="challenge-"] div'
1254
+ elif driver.is_element_present(
1255
+ "form.turnstile div#turnstile-widget div:not([class])"
1256
+ ):
1257
+ frame = "form.turnstile #turnstile-widget div:not([class])"
1254
1258
  elif driver.is_element_present(
1255
1259
  'form div:not([class]):has(input[name*="cf-turn"])'
1256
1260
  ):
@@ -1291,6 +1295,23 @@ def _uc_gui_click_captcha(
1291
1295
  driver.cdp.evaluate(script)
1292
1296
  else:
1293
1297
  driver.execute_script(script)
1298
+ elif (
1299
+ driver.is_element_present("form")
1300
+ and driver.is_element_present(
1301
+ "form.turnstile #turnstile-widget > div:not([class])"
1302
+ )
1303
+ ):
1304
+ script = (
1305
+ """var $elements = document.querySelectorAll(
1306
+ 'form.turnstile #turnstile-widget');
1307
+ var index = 0, length = $elements.length;
1308
+ for(; index < length; index++){
1309
+ $elements[index].setAttribute('align', 'left');}"""
1310
+ )
1311
+ if __is_cdp_swap_needed(driver):
1312
+ driver.cdp.evaluate(script)
1313
+ else:
1314
+ driver.execute_script(script)
1294
1315
  if not is_in_frame or needs_switch:
1295
1316
  # Currently not in frame (or nested frame outside CF one)
1296
1317
  try:
@@ -877,8 +877,13 @@ class CDPMethods():
877
877
 
878
878
  def evaluate(self, expression):
879
879
  """Run a JavaScript expression and return the result."""
880
- if expression.startswith("return "):
881
- expression = expression[len("return "):]
880
+ expression = expression.strip()
881
+ exp_list = expression.split("\n")
882
+ if exp_list and exp_list[-1].strip().startswith("return "):
883
+ expression = (
884
+ "\n".join(exp_list[0:-1]) + "\n"
885
+ + exp_list[-1].strip()[len("return "):]
886
+ ).strip()
882
887
  return self.loop.run_until_complete(
883
888
  self.page.evaluate(expression)
884
889
  )
@@ -3256,7 +3256,7 @@ class BaseCase(unittest.TestCase):
3256
3256
  html_string = "\n".join(new_lines)
3257
3257
  soup = self.get_beautiful_soup(html_string)
3258
3258
  found_base = False
3259
- links = soup.findAll("link")
3259
+ links = soup.find_all("link")
3260
3260
  href = None
3261
3261
  for link in links:
3262
3262
  if link.get("rel") == ["canonical"] and link.get("href"):
@@ -3272,7 +3272,7 @@ class BaseCase(unittest.TestCase):
3272
3272
  "<head>", '<head><base href="%s">' % href
3273
3273
  )
3274
3274
  elif not found_base:
3275
- bases = soup.findAll("base")
3275
+ bases = soup.find_all("base")
3276
3276
  for base in bases:
3277
3277
  if base.get("href"):
3278
3278
  href = base.get("href")
@@ -3280,7 +3280,7 @@ class BaseCase(unittest.TestCase):
3280
3280
  html_string = html_string.replace('base: "."', 'base: "%s"' % href)
3281
3281
 
3282
3282
  soup = self.get_beautiful_soup(html_string)
3283
- scripts = soup.findAll("script")
3283
+ scripts = soup.find_all("script")
3284
3284
  for script in scripts:
3285
3285
  if script.get("type") != "application/json":
3286
3286
  html_string = html_string.replace(str(script), "")
@@ -452,14 +452,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
452
452
  self.service.start()
453
453
  with suppress(Exception):
454
454
  self.start_session()
455
+ time.sleep(0.0075)
455
456
  with suppress(Exception):
456
- if self.current_url.startswith("chrome-extension://"):
457
- self.close()
458
- if self.service.is_connectable():
459
- self.stop_client()
460
- self.service.stop()
461
- self.service.start()
462
- self.start_session()
457
+ for i in range(5):
458
+ if self.current_url.startswith("chrome-extension://"):
459
+ self.close()
460
+ if self.service.is_connectable():
461
+ self.stop_client()
462
+ self.service.stop()
463
+ self.service.start()
464
+ self.start_session()
465
+ time.sleep(0.0075)
466
+ else:
467
+ break
463
468
  self._is_connected = True
464
469
 
465
470
  def disconnect(self):
@@ -480,14 +485,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
480
485
  self.service.start()
481
486
  with suppress(Exception):
482
487
  self.start_session()
488
+ time.sleep(0.0075)
483
489
  with suppress(Exception):
484
- if self.current_url.startswith("chrome-extension://"):
485
- self.close()
486
- if self.service.is_connectable():
487
- self.stop_client()
488
- self.service.stop()
489
- self.service.start()
490
- self.start_session()
490
+ for i in range(5):
491
+ if self.current_url.startswith("chrome-extension://"):
492
+ self.close()
493
+ if self.service.is_connectable():
494
+ self.stop_client()
495
+ self.service.stop()
496
+ self.service.start()
497
+ self.start_session()
498
+ time.sleep(0.0075)
499
+ else:
500
+ break
491
501
  self._is_connected = True
492
502
 
493
503
  def start_session(self, capabilities=None):
@@ -226,7 +226,11 @@ async def start_async(*args, **kwargs) -> Browser:
226
226
  binary_location = None
227
227
  if "browser_executable_path" in kwargs:
228
228
  binary_location = kwargs["browser_executable_path"]
229
- if shared_utils.is_chrome_130_or_newer(binary_location):
229
+ if (
230
+ shared_utils.is_chrome_130_or_newer(binary_location)
231
+ and "user_data_dir" in kwargs
232
+ and kwargs["user_data_dir"]
233
+ ):
230
234
  if "headless" in kwargs:
231
235
  headless = kwargs["headless"]
232
236
  decoy_args = kwargs
@@ -241,12 +245,27 @@ async def start_async(*args, **kwargs) -> Browser:
241
245
 
242
246
 
243
247
  def start_sync(*args, **kwargs) -> Browser:
244
- loop = asyncio.get_event_loop()
248
+ loop = None
249
+ if (
250
+ "loop" in kwargs
251
+ and kwargs["loop"]
252
+ and hasattr(kwargs["loop"], "create_task")
253
+ ):
254
+ loop = kwargs["loop"]
255
+ else:
256
+ try:
257
+ loop = asyncio.get_event_loop()
258
+ except RuntimeError:
259
+ loop = asyncio.new_event_loop()
245
260
  headless = False
246
261
  binary_location = None
247
262
  if "browser_executable_path" in kwargs:
248
263
  binary_location = kwargs["browser_executable_path"]
249
- if shared_utils.is_chrome_130_or_newer(binary_location):
264
+ if (
265
+ shared_utils.is_chrome_130_or_newer(binary_location)
266
+ and "user_data_dir" in kwargs
267
+ and kwargs["user_data_dir"]
268
+ ):
250
269
  if "headless" in kwargs:
251
270
  headless = kwargs["headless"]
252
271
  decoy_args = kwargs
@@ -896,6 +896,10 @@ class Tab(Connection):
896
896
  """
897
897
  return await self.set_window_state(left, top, width, height)
898
898
 
899
+ async def set_window_rect(self, left=0, top=0, width=1280, height=1024):
900
+ """Same as set_window_size(). Uses a different naming convention."""
901
+ return await self.set_window_state(left, top, width, height)
902
+
899
903
  async def activate(self):
900
904
  """Active this target (Eg: tab, window, page)"""
901
905
  await self.send(cdp.target.activate_target(self.target.target_id))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.34.7
3
+ Version: 4.34.9
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
@@ -0,0 +1,154 @@
1
+ .gitignore
2
+ LICENSE
3
+ MANIFEST.in
4
+ README.md
5
+ install.sh
6
+ pyproject.toml
7
+ pytest.ini
8
+ requirements.txt
9
+ setup.cfg
10
+ setup.py
11
+ virtualenv_install.sh
12
+ sbase/__init__.py
13
+ sbase/__main__.py
14
+ sbase/steps.py
15
+ seleniumbase/__init__.py
16
+ seleniumbase/__main__.py
17
+ seleniumbase/__version__.py
18
+ seleniumbase.egg-info/PKG-INFO
19
+ seleniumbase.egg-info/SOURCES.txt
20
+ seleniumbase.egg-info/dependency_links.txt
21
+ seleniumbase.egg-info/entry_points.txt
22
+ seleniumbase.egg-info/requires.txt
23
+ seleniumbase.egg-info/top_level.txt
24
+ seleniumbase/behave/__init__.py
25
+ seleniumbase/behave/behave_helper.py
26
+ seleniumbase/behave/behave_sb.py
27
+ seleniumbase/behave/steps.py
28
+ seleniumbase/common/__init__.py
29
+ seleniumbase/common/decorators.py
30
+ seleniumbase/common/encryption.py
31
+ seleniumbase/common/exceptions.py
32
+ seleniumbase/common/obfuscate.py
33
+ seleniumbase/common/unobfuscate.py
34
+ seleniumbase/config/__init__.py
35
+ seleniumbase/config/ad_block_list.py
36
+ seleniumbase/config/proxy_list.py
37
+ seleniumbase/config/settings.py
38
+ seleniumbase/console_scripts/__init__.py
39
+ seleniumbase/console_scripts/logo_helper.py
40
+ seleniumbase/console_scripts/rich_helper.py
41
+ seleniumbase/console_scripts/run.py
42
+ seleniumbase/console_scripts/sb_behave_gui.py
43
+ seleniumbase/console_scripts/sb_caseplans.py
44
+ seleniumbase/console_scripts/sb_commander.py
45
+ seleniumbase/console_scripts/sb_install.py
46
+ seleniumbase/console_scripts/sb_mkchart.py
47
+ seleniumbase/console_scripts/sb_mkdir.py
48
+ seleniumbase/console_scripts/sb_mkfile.py
49
+ seleniumbase/console_scripts/sb_mkpres.py
50
+ seleniumbase/console_scripts/sb_mkrec.py
51
+ seleniumbase/console_scripts/sb_objectify.py
52
+ seleniumbase/console_scripts/sb_print.py
53
+ seleniumbase/console_scripts/sb_recorder.py
54
+ seleniumbase/core/__init__.py
55
+ seleniumbase/core/application_manager.py
56
+ seleniumbase/core/browser_launcher.py
57
+ seleniumbase/core/capabilities_parser.py
58
+ seleniumbase/core/colored_traceback.py
59
+ seleniumbase/core/create_db_tables.sql
60
+ seleniumbase/core/detect_b_ver.py
61
+ seleniumbase/core/download_helper.py
62
+ seleniumbase/core/encoded_images.py
63
+ seleniumbase/core/jqc_helper.py
64
+ seleniumbase/core/log_helper.py
65
+ seleniumbase/core/mysql.py
66
+ seleniumbase/core/proxy_helper.py
67
+ seleniumbase/core/recorder_helper.py
68
+ seleniumbase/core/report_helper.py
69
+ seleniumbase/core/s3_manager.py
70
+ seleniumbase/core/sb_cdp.py
71
+ seleniumbase/core/sb_driver.py
72
+ seleniumbase/core/session_helper.py
73
+ seleniumbase/core/settings_parser.py
74
+ seleniumbase/core/style_sheet.py
75
+ seleniumbase/core/testcase_manager.py
76
+ seleniumbase/core/tour_helper.py
77
+ seleniumbase/core/visual_helper.py
78
+ seleniumbase/drivers/__init__.py
79
+ seleniumbase/extensions/__init__.py
80
+ seleniumbase/extensions/ad_block.zip
81
+ seleniumbase/extensions/disable_csp.zip
82
+ seleniumbase/extensions/recorder.zip
83
+ seleniumbase/extensions/sbase_ext.zip
84
+ seleniumbase/fixtures/__init__.py
85
+ seleniumbase/fixtures/base_case.py
86
+ seleniumbase/fixtures/constants.py
87
+ seleniumbase/fixtures/css_to_xpath.py
88
+ seleniumbase/fixtures/errors.py
89
+ seleniumbase/fixtures/js_utils.py
90
+ seleniumbase/fixtures/page_actions.py
91
+ seleniumbase/fixtures/page_utils.py
92
+ seleniumbase/fixtures/shared_utils.py
93
+ seleniumbase/fixtures/unittest_helper.py
94
+ seleniumbase/fixtures/words.py
95
+ seleniumbase/fixtures/xpath_to_css.py
96
+ seleniumbase/js_code/__init__.py
97
+ seleniumbase/js_code/active_css_js.py
98
+ seleniumbase/js_code/live_js.py
99
+ seleniumbase/js_code/recorder_js.py
100
+ seleniumbase/masterqa/__init__.py
101
+ seleniumbase/masterqa/master_qa.py
102
+ seleniumbase/plugins/__init__.py
103
+ seleniumbase/plugins/base_plugin.py
104
+ seleniumbase/plugins/basic_test_info.py
105
+ seleniumbase/plugins/db_reporting_plugin.py
106
+ seleniumbase/plugins/driver_manager.py
107
+ seleniumbase/plugins/page_source.py
108
+ seleniumbase/plugins/pytest_plugin.py
109
+ seleniumbase/plugins/s3_logging_plugin.py
110
+ seleniumbase/plugins/sb_manager.py
111
+ seleniumbase/plugins/screen_shots.py
112
+ seleniumbase/plugins/selenium_plugin.py
113
+ seleniumbase/resources/__init__.py
114
+ seleniumbase/translate/__init__.py
115
+ seleniumbase/translate/chinese.py
116
+ seleniumbase/translate/dutch.py
117
+ seleniumbase/translate/french.py
118
+ seleniumbase/translate/italian.py
119
+ seleniumbase/translate/japanese.py
120
+ seleniumbase/translate/korean.py
121
+ seleniumbase/translate/master_dict.py
122
+ seleniumbase/translate/portuguese.py
123
+ seleniumbase/translate/russian.py
124
+ seleniumbase/translate/spanish.py
125
+ seleniumbase/translate/translator.py
126
+ seleniumbase/undetected/__init__.py
127
+ seleniumbase/undetected/cdp.py
128
+ seleniumbase/undetected/dprocess.py
129
+ seleniumbase/undetected/options.py
130
+ seleniumbase/undetected/patcher.py
131
+ seleniumbase/undetected/reactor.py
132
+ seleniumbase/undetected/webelement.py
133
+ seleniumbase/undetected/cdp_driver/__init__.py
134
+ seleniumbase/undetected/cdp_driver/_contradict.py
135
+ seleniumbase/undetected/cdp_driver/browser.py
136
+ seleniumbase/undetected/cdp_driver/cdp_util.py
137
+ seleniumbase/undetected/cdp_driver/config.py
138
+ seleniumbase/undetected/cdp_driver/connection.py
139
+ seleniumbase/undetected/cdp_driver/element.py
140
+ seleniumbase/undetected/cdp_driver/tab.py
141
+ seleniumbase/utilities/__init__.py
142
+ seleniumbase/utilities/selenium_grid/__init__.py
143
+ seleniumbase/utilities/selenium_grid/download_selenium_server.py
144
+ seleniumbase/utilities/selenium_grid/font_color
145
+ seleniumbase/utilities/selenium_grid/grid-hub
146
+ seleniumbase/utilities/selenium_grid/grid-node
147
+ seleniumbase/utilities/selenium_grid/grid_hub.py
148
+ seleniumbase/utilities/selenium_grid/grid_node.py
149
+ seleniumbase/utilities/selenium_grid/register-grid-node.bat
150
+ seleniumbase/utilities/selenium_grid/register-grid-node.sh
151
+ seleniumbase/utilities/selenium_grid/start-grid-hub.bat
152
+ seleniumbase/utilities/selenium_grid/start-grid-hub.sh
153
+ seleniumbase/utilities/selenium_ide/__init__.py
154
+ seleniumbase/utilities/selenium_ide/convert_ide.py
@@ -1,20 +0,0 @@
1
- """Add an item to a shopping cart. Verify. Remove item. Verify."""
2
- from seleniumbase import BaseCase
3
- BaseCase.main(__name__, __file__)
4
-
5
-
6
- class MyTestClass(BaseCase):
7
- def test_basics(self):
8
- self.open("https://www.saucedemo.com")
9
- self.type("#user-name", "standard_user")
10
- self.type("#password", "secret_sauce\n")
11
- self.assert_element("div.inventory_list")
12
- self.assert_exact_text("Products", "span.title")
13
- self.click('button[name*="backpack"]')
14
- self.click("#shopping_cart_container a")
15
- self.assert_exact_text("Your Cart", "span.title")
16
- self.assert_text("Backpack", "div.cart_item")
17
- self.click('button:contains("Remove")') # HTML innerText
18
- self.assert_text_not_visible("Backpack", "div.cart_item")
19
- self.js_click("a#logout_sidebar_link")
20
- self.assert_element("div#login_button_container")
@@ -1,11 +0,0 @@
1
- from seleniumbase import BaseCase
2
- from seleniumbase.behave import behave_sb
3
- behave_sb.set_base_class(BaseCase) # Accepts a BaseCase subclass
4
- from seleniumbase.behave.behave_sb import before_all # noqa
5
- from seleniumbase.behave.behave_sb import before_feature # noqa
6
- from seleniumbase.behave.behave_sb import before_scenario # noqa
7
- from seleniumbase.behave.behave_sb import before_step # noqa
8
- from seleniumbase.behave.behave_sb import after_step # noqa
9
- from seleniumbase.behave.behave_sb import after_scenario # noqa
10
- from seleniumbase.behave.behave_sb import after_feature # noqa
11
- from seleniumbase.behave.behave_sb import after_all # noqa
@@ -1,144 +0,0 @@
1
- from behave import step
2
-
3
-
4
- @step("Open the Calculator App")
5
- def go_to_calculator(context):
6
- context.sb.open("https://seleniumbase.io/apps/calculator")
7
-
8
-
9
- @step("Press C")
10
- def press_c(context):
11
- context.sb.click("button#clear")
12
-
13
-
14
- @step("Press (")
15
- def press_open_paren(context):
16
- context.sb.click('button[id="("]')
17
-
18
-
19
- @step("Press )")
20
- def press_close_paren(context):
21
- context.sb.click('button[id=")"]')
22
-
23
-
24
- @step("Press ÷")
25
- def press_divide(context):
26
- context.sb.click("button#divide")
27
-
28
-
29
- @step("Press ×")
30
- def press_multiply(context):
31
- context.sb.click("button#multiply")
32
-
33
-
34
- @step("Press -")
35
- def press_subtract(context):
36
- context.sb.click("button#subtract")
37
-
38
-
39
- @step("Press +")
40
- def press_add(context):
41
- context.sb.click("button#add")
42
-
43
-
44
- @step("Press =")
45
- def press_equal(context):
46
- context.sb.click("button#equal")
47
-
48
-
49
- @step("Press 1")
50
- def press_1(context):
51
- context.sb.click('button[id="1"]')
52
-
53
-
54
- @step("Press 2")
55
- def press_2(context):
56
- context.sb.click('button[id="2"]')
57
-
58
-
59
- @step("Press 3")
60
- def press_3(context):
61
- context.sb.click('button[id="3"]')
62
-
63
-
64
- @step("Press 4")
65
- def press_4(context):
66
- context.sb.click('button[id="4"]')
67
-
68
-
69
- @step("Press 5")
70
- def press_5(context):
71
- context.sb.click('button[id="5"]')
72
-
73
-
74
- @step("Press 6")
75
- def press_6(context):
76
- context.sb.click('button[id="6"]')
77
-
78
-
79
- @step("Press 7")
80
- def press_7(context):
81
- context.sb.click('button[id="7"]')
82
-
83
-
84
- @step("Press 8")
85
- def press_8(context):
86
- context.sb.click('button[id="8"]')
87
-
88
-
89
- @step("Press 9")
90
- def press_9(context):
91
- context.sb.click('button[id="9"]')
92
-
93
-
94
- @step("Press 0")
95
- def press_0(context):
96
- context.sb.click('button[id="0"]')
97
-
98
-
99
- @step("Press ←")
100
- def press_delete(context):
101
- context.sb.click("button#delete")
102
-
103
-
104
- @step("Press .")
105
- def press_dot(context):
106
- context.sb.click('button[id="."]')
107
-
108
-
109
- @step("Press [{number}]")
110
- def enter_number_into_calc(context, number):
111
- sb = context.sb
112
- for digit in number:
113
- sb.click('button[id="%s"]' % digit)
114
-
115
-
116
- @step("Evaluate [{equation}]")
117
- def evaluate_equation(context, equation):
118
- sb = context.sb
119
- for key in equation:
120
- if key == " ":
121
- continue
122
- elif key == "÷":
123
- sb.click("button#divide")
124
- elif key == "×":
125
- sb.click("button#multiply")
126
- elif key == "-":
127
- sb.click("button#subtract")
128
- elif key == "+":
129
- sb.click("button#add")
130
- else:
131
- sb.click('button[id="%s"]' % key)
132
- sb.click("button#equal")
133
-
134
-
135
- @step('Verify output is "{output}"')
136
- def verify_output(context, output):
137
- sb = context.sb
138
- sb.assert_exact_text(output, "#output")
139
-
140
-
141
- @step("Save calculator screenshot to logs")
142
- def save_calculator_screenshot_to_logs(context):
143
- sb = context.sb
144
- sb.save_screenshot_to_logs()
@@ -1,11 +0,0 @@
1
- from behave import step
2
-
3
-
4
- @step("Open the Fail Page")
5
- def go_to_error_page(context):
6
- context.sb.open("https://seleniumbase.io/error_page/")
7
-
8
-
9
- @step("Fail test on purpose")
10
- def fail_on_purpose(context):
11
- context.sb.fail("This test fails on purpose!")
@@ -1 +0,0 @@
1
- from seleniumbase.behave import steps # noqa