seleniumbase 4.34.8__tar.gz → 4.34.9__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {seleniumbase-4.34.8/seleniumbase.egg-info → seleniumbase-4.34.9}/PKG-INFO +1 -1
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/browser_launcher.py +21 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/base_case.py +3 -3
- {seleniumbase-4.34.8/examples/migration → seleniumbase-4.34.9/seleniumbase/js_code}/__init__.py +0 -0
- {seleniumbase-4.34.8/examples/offline_examples → seleniumbase-4.34.9/seleniumbase/resources}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/__init__.py +24 -14
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/cdp_util.py +10 -2
- {seleniumbase-4.34.8 → seleniumbase-4.34.9/seleniumbase.egg-info}/PKG-INFO +1 -1
- seleniumbase-4.34.9/seleniumbase.egg-info/SOURCES.txt +154 -0
- seleniumbase-4.34.8/examples/basic_test.py +0 -20
- seleniumbase-4.34.8/examples/behave_bdd/features/environment.py +0 -11
- seleniumbase-4.34.8/examples/behave_bdd/features/steps/calculator.py +0 -144
- seleniumbase-4.34.8/examples/behave_bdd/features/steps/fail_page.py +0 -11
- seleniumbase-4.34.8/examples/behave_bdd/features/steps/imported.py +0 -1
- seleniumbase-4.34.8/examples/behave_bdd/features/steps/swag_labs.py +0 -161
- seleniumbase-4.34.8/examples/boilerplates/base_test_case.py +0 -49
- seleniumbase-4.34.8/examples/boilerplates/boilerplate_test.py +0 -14
- seleniumbase-4.34.8/examples/boilerplates/classic_obj_test.py +0 -18
- seleniumbase-4.34.8/examples/boilerplates/page_objects.py +0 -45
- seleniumbase-4.34.8/examples/boilerplates/samples/file_parsing/parse_files.py +0 -55
- seleniumbase-4.34.8/examples/boilerplates/samples/google_objects.py +0 -12
- seleniumbase-4.34.8/examples/boilerplates/samples/google_test.py +0 -29
- seleniumbase-4.34.8/examples/boilerplates/samples/sb_swag_test.py +0 -18
- seleniumbase-4.34.8/examples/boilerplates/samples/swag_labs_test.py +0 -20
- seleniumbase-4.34.8/examples/boilerplates/samples/test_page_objects.py +0 -50
- seleniumbase-4.34.8/examples/boilerplates/sb_fixture_test.py +0 -16
- seleniumbase-4.34.8/examples/capabilities/mac_cap_file.py +0 -6
- seleniumbase-4.34.8/examples/capabilities/sample_cap_file_BS.py +0 -12
- seleniumbase-4.34.8/examples/capabilities/sample_cap_file_SL.py +0 -8
- seleniumbase-4.34.8/examples/capabilities/selenoid_cap_file.py +0 -14
- seleniumbase-4.34.8/examples/capabilities/win10_cap_file.py +0 -6
- seleniumbase-4.34.8/examples/chart_maker/chart_presentation.py +0 -37
- seleniumbase-4.34.8/examples/chart_maker/my_chart.py +0 -13
- seleniumbase-4.34.8/examples/chart_maker/pie_charts.py +0 -45
- seleniumbase-4.34.8/examples/chart_maker/test_area_chart.py +0 -19
- seleniumbase-4.34.8/examples/chart_maker/test_display_chart.py +0 -33
- seleniumbase-4.34.8/examples/chart_maker/test_line_chart.py +0 -19
- seleniumbase-4.34.8/examples/chart_maker/test_multi_series.py +0 -48
- seleniumbase-4.34.8/examples/chart_maker/test_save_chart.py +0 -33
- seleniumbase-4.34.8/examples/coffee_cart_tests.py +0 -91
- seleniumbase-4.34.8/examples/custom_settings.py +0 -124
- seleniumbase-4.34.8/examples/desktop_apps/recorder.py +0 -12
- seleniumbase-4.34.8/examples/dialog_boxes/dialog_box_tour.py +0 -123
- seleniumbase-4.34.8/examples/edge_test.py +0 -31
- seleniumbase-4.34.8/examples/github_test.py +0 -19
- seleniumbase-4.34.8/examples/gui_test_runner.py +0 -121
- seleniumbase-4.34.8/examples/hack_the_planet.py +0 -342
- seleniumbase-4.34.8/examples/handle_alert_test.py +0 -22
- seleniumbase-4.34.8/examples/iframe_tests.py +0 -52
- seleniumbase-4.34.8/examples/locale_code_test.py +0 -21
- seleniumbase-4.34.8/examples/master_qa/basic_masterqa_test_0.py +0 -15
- seleniumbase-4.34.8/examples/master_qa/masterqa_test_1.py +0 -27
- seleniumbase-4.34.8/examples/migration/protractor/example_test.py +0 -24
- seleniumbase-4.34.8/examples/migration/protractor/input_test.py +0 -10
- seleniumbase-4.34.8/examples/migration/protractor/mat_paginator_test.py +0 -27
- seleniumbase-4.34.8/examples/migration/raw_selenium/flaky_messy_raw.py +0 -73
- seleniumbase-4.34.8/examples/migration/raw_selenium/long_messy_raw.py +0 -97
- seleniumbase-4.34.8/examples/migration/raw_selenium/messy_raw.py +0 -85
- seleniumbase-4.34.8/examples/migration/raw_selenium/refined_raw.py +0 -127
- seleniumbase-4.34.8/examples/migration/raw_selenium/simple_sbase.py +0 -21
- seleniumbase-4.34.8/examples/my_first_test.py +0 -150
- seleniumbase-4.34.8/examples/nth_child_test.py +0 -37
- seleniumbase-4.34.8/examples/offline_examples/load_html_test.py +0 -21
- seleniumbase-4.34.8/examples/offline_examples/test_demo_page.py +0 -116
- seleniumbase-4.34.8/examples/offline_examples/test_extended_driver.py +0 -61
- seleniumbase-4.34.8/examples/offline_examples/test_handle_alerts.py +0 -22
- seleniumbase-4.34.8/examples/offline_examples/test_request_fixture.py +0 -26
- seleniumbase-4.34.8/examples/offline_examples/test_user_agent.py +0 -42
- seleniumbase-4.34.8/examples/old_wordle_script.py +0 -125
- seleniumbase-4.34.8/examples/parameterized_test.py +0 -19
- seleniumbase-4.34.8/examples/performance_test.py +0 -52
- seleniumbase-4.34.8/examples/presenter/core_presentation.py +0 -96
- seleniumbase-4.34.8/examples/presenter/edge_presentation.py +0 -716
- seleniumbase-4.34.8/examples/presenter/fundamentals.py +0 -416
- seleniumbase-4.34.8/examples/presenter/multi_uc.py +0 -24
- seleniumbase-4.34.8/examples/presenter/my_presentation.py +0 -138
- seleniumbase-4.34.8/examples/presenter/py_virtual_envs.py +0 -194
- seleniumbase-4.34.8/examples/presenter/uc_presentation.py +0 -560
- seleniumbase-4.34.8/examples/presenter/uc_presentation_3.py +0 -783
- seleniumbase-4.34.8/examples/proxy_test.py +0 -42
- seleniumbase-4.34.8/examples/rate_limiting_test.py +0 -21
- seleniumbase-4.34.8/examples/raw_ahrefs.py +0 -17
- seleniumbase-4.34.8/examples/raw_antibot_login.py +0 -15
- seleniumbase-4.34.8/examples/raw_bing_captcha.py +0 -6
- seleniumbase-4.34.8/examples/raw_block.py +0 -11
- seleniumbase-4.34.8/examples/raw_brotector_captcha.py +0 -9
- seleniumbase-4.34.8/examples/raw_call.py +0 -9
- seleniumbase-4.34.8/examples/raw_cdp_logging.py +0 -12
- seleniumbase-4.34.8/examples/raw_cf.py +0 -14
- seleniumbase-4.34.8/examples/raw_cookies.py +0 -19
- seleniumbase-4.34.8/examples/raw_detection.py +0 -12
- seleniumbase-4.34.8/examples/raw_driver_context.py +0 -20
- seleniumbase-4.34.8/examples/raw_driver_manager.py +0 -22
- seleniumbase-4.34.8/examples/raw_file_call.py +0 -22
- seleniumbase-4.34.8/examples/raw_form_turnstile.py +0 -20
- seleniumbase-4.34.8/examples/raw_games.py +0 -14
- seleniumbase-4.34.8/examples/raw_gui_click.py +0 -17
- seleniumbase-4.34.8/examples/raw_hobbit.py +0 -13
- seleniumbase-4.34.8/examples/raw_login_context.py +0 -12
- seleniumbase-4.34.8/examples/raw_login_driver.py +0 -15
- seleniumbase-4.34.8/examples/raw_login_sb.py +0 -12
- seleniumbase-4.34.8/examples/raw_main_call.py +0 -20
- seleniumbase-4.34.8/examples/raw_mobile.py +0 -17
- seleniumbase-4.34.8/examples/raw_multi_drivers.py +0 -27
- seleniumbase-4.34.8/examples/raw_nopecha.py +0 -8
- seleniumbase-4.34.8/examples/raw_order_tickets.py +0 -8
- seleniumbase-4.34.8/examples/raw_parameter_script.py +0 -144
- seleniumbase-4.34.8/examples/raw_performance_logs.py +0 -7
- seleniumbase-4.34.8/examples/raw_pixelscan.py +0 -19
- seleniumbase-4.34.8/examples/raw_pyautogui.py +0 -17
- seleniumbase-4.34.8/examples/raw_recaptcha.py +0 -10
- seleniumbase-4.34.8/examples/raw_robot.py +0 -17
- seleniumbase-4.34.8/examples/raw_sb.py +0 -14
- seleniumbase-4.34.8/examples/raw_test_scripts.py +0 -22
- seleniumbase-4.34.8/examples/raw_turnstile.py +0 -9
- seleniumbase-4.34.8/examples/raw_uc_mode.py +0 -12
- seleniumbase-4.34.8/examples/sb_fixture_tests.py +0 -25
- seleniumbase-4.34.8/examples/shadow_root_test.py +0 -23
- seleniumbase-4.34.8/examples/swag_labs_user_tests.py +0 -94
- seleniumbase-4.34.8/examples/test_3d_apis.py +0 -17
- seleniumbase-4.34.8/examples/test_apple_site.py +0 -36
- seleniumbase-4.34.8/examples/test_assert_elements.py +0 -14
- seleniumbase-4.34.8/examples/test_calculator.py +0 -16
- seleniumbase-4.34.8/examples/test_canvas.py +0 -49
- seleniumbase-4.34.8/examples/test_cdp_ad_blocking.py +0 -31
- seleniumbase-4.34.8/examples/test_checkboxes.py +0 -20
- seleniumbase-4.34.8/examples/test_chinese_pdf.py +0 -20
- seleniumbase-4.34.8/examples/test_chromedriver.py +0 -54
- seleniumbase-4.34.8/examples/test_coffee_cart.py +0 -23
- seleniumbase-4.34.8/examples/test_console_logging.py +0 -15
- seleniumbase-4.34.8/examples/test_contains_selector.py +0 -13
- seleniumbase-4.34.8/examples/test_cycle_elements.py +0 -16
- seleniumbase-4.34.8/examples/test_decryption.py +0 -21
- seleniumbase-4.34.8/examples/test_deferred_asserts.py +0 -23
- seleniumbase-4.34.8/examples/test_demo_site.py +0 -119
- seleniumbase-4.34.8/examples/test_detect_404s.py +0 -9
- seleniumbase-4.34.8/examples/test_docs_site.py +0 -22
- seleniumbase-4.34.8/examples/test_double_click.py +0 -21
- seleniumbase-4.34.8/examples/test_download_files.py +0 -106
- seleniumbase-4.34.8/examples/test_download_images.py +0 -58
- seleniumbase-4.34.8/examples/test_drag_and_drop.py +0 -22
- seleniumbase-4.34.8/examples/test_error_page.py +0 -17
- seleniumbase-4.34.8/examples/test_event_firing.py +0 -39
- seleniumbase-4.34.8/examples/test_fail.py +0 -16
- seleniumbase-4.34.8/examples/test_geolocation.py +0 -45
- seleniumbase-4.34.8/examples/test_get_coffee.py +0 -20
- seleniumbase-4.34.8/examples/test_get_locale_code.py +0 -12
- seleniumbase-4.34.8/examples/test_get_pdf_text.py +0 -13
- seleniumbase-4.34.8/examples/test_get_user_agent.py +0 -11
- seleniumbase-4.34.8/examples/test_hack_search.py +0 -33
- seleniumbase-4.34.8/examples/test_highlight_elements.py +0 -11
- seleniumbase-4.34.8/examples/test_image_saving.py +0 -83
- seleniumbase-4.34.8/examples/test_inspect_html.py +0 -11
- seleniumbase-4.34.8/examples/test_login.py +0 -19
- seleniumbase-4.34.8/examples/test_markers.py +0 -37
- seleniumbase-4.34.8/examples/test_mfa_login.py +0 -17
- seleniumbase-4.34.8/examples/test_multiple_drivers.py +0 -19
- seleniumbase-4.34.8/examples/test_null.py +0 -7
- seleniumbase-4.34.8/examples/test_override_driver.py +0 -31
- seleniumbase-4.34.8/examples/test_override_sb_fixture.py +0 -87
- seleniumbase-4.34.8/examples/test_parse_soup.py +0 -39
- seleniumbase-4.34.8/examples/test_pdf_asserts.py +0 -19
- seleniumbase-4.34.8/examples/test_pytest_parametrize.py +0 -24
- seleniumbase-4.34.8/examples/test_repeat_tests.py +0 -36
- seleniumbase-4.34.8/examples/test_request_sb_fixture.py +0 -22
- seleniumbase-4.34.8/examples/test_save_screenshots.py +0 -40
- seleniumbase-4.34.8/examples/test_sb_fixture.py +0 -15
- seleniumbase-4.34.8/examples/test_scrape_bing.py +0 -30
- seleniumbase-4.34.8/examples/test_select_options.py +0 -41
- seleniumbase-4.34.8/examples/test_shadow_dom.py +0 -77
- seleniumbase-4.34.8/examples/test_show_file_choosers.py +0 -28
- seleniumbase-4.34.8/examples/test_simple_login.py +0 -15
- seleniumbase-4.34.8/examples/test_skype_site.py +0 -28
- seleniumbase-4.34.8/examples/test_suite.py +0 -31
- seleniumbase-4.34.8/examples/test_swag_labs.py +0 -81
- seleniumbase-4.34.8/examples/test_tinymce.py +0 -29
- seleniumbase-4.34.8/examples/test_todomvc.py +0 -29
- seleniumbase-4.34.8/examples/test_url_asserts.py +0 -12
- seleniumbase-4.34.8/examples/test_usefixtures.py +0 -18
- seleniumbase-4.34.8/examples/test_verify_chromedriver.py +0 -33
- seleniumbase-4.34.8/examples/test_window_switching.py +0 -22
- seleniumbase-4.34.8/examples/test_xfail.py +0 -14
- seleniumbase-4.34.8/examples/test_xkcd.py +0 -16
- seleniumbase-4.34.8/examples/time_limit_test.py +0 -28
- seleniumbase-4.34.8/examples/tour_examples/bootstrap_google_tour.py +0 -87
- seleniumbase-4.34.8/examples/tour_examples/bootstrap_xkcd_tour.py +0 -20
- seleniumbase-4.34.8/examples/tour_examples/driverjs_maps_tour.py +0 -63
- seleniumbase-4.34.8/examples/tour_examples/google_tour.py +0 -95
- seleniumbase-4.34.8/examples/tour_examples/hopscotch_google_tour.py +0 -87
- seleniumbase-4.34.8/examples/tour_examples/introjs_google_tour.py +0 -88
- seleniumbase-4.34.8/examples/tour_examples/maps_introjs_tour.py +0 -64
- seleniumbase-4.34.8/examples/tour_examples/octocat_tour.py +0 -23
- seleniumbase-4.34.8/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -14
- seleniumbase-4.34.8/examples/tour_examples/shepherd_google_tour.py +0 -93
- seleniumbase-4.34.8/examples/tour_examples/xkcd_tour.py +0 -21
- seleniumbase-4.34.8/examples/translations/chinese_test_1.py +0 -28
- seleniumbase-4.34.8/examples/translations/dutch_test_1.py +0 -22
- seleniumbase-4.34.8/examples/translations/english_test_1.py +0 -18
- seleniumbase-4.34.8/examples/translations/french_test_1.py +0 -23
- seleniumbase-4.34.8/examples/translations/italian_test_1.py +0 -22
- seleniumbase-4.34.8/examples/translations/japanese_test_1.py +0 -23
- seleniumbase-4.34.8/examples/translations/korean_test_1.py +0 -21
- seleniumbase-4.34.8/examples/translations/portuguese_test_1.py +0 -25
- seleniumbase-4.34.8/examples/translations/russian_test_1.py +0 -22
- seleniumbase-4.34.8/examples/translations/spanish_test_1.py +0 -22
- seleniumbase-4.34.8/examples/uc_cdp_events.py +0 -29
- seleniumbase-4.34.8/examples/unit_tests/verify_framework.py +0 -180
- seleniumbase-4.34.8/examples/upgrade_chromedriver.py +0 -99
- seleniumbase-4.34.8/examples/upload_file_test.py +0 -21
- seleniumbase-4.34.8/examples/user_agent_test.py +0 -56
- seleniumbase-4.34.8/examples/verify_undetected.py +0 -17
- seleniumbase-4.34.8/examples/visual_testing/layout_test.py +0 -33
- seleniumbase-4.34.8/examples/visual_testing/python_home_test.py +0 -12
- seleniumbase-4.34.8/examples/visual_testing/test_layout_fail.py +0 -37
- seleniumbase-4.34.8/examples/visual_testing/xkcd_visual_test.py +0 -13
- seleniumbase-4.34.8/examples/wordle_test.py +0 -106
- seleniumbase-4.34.8/examples/xpath_test.py +0 -13
- seleniumbase-4.34.8/examples/youtube_search_test.py +0 -30
- seleniumbase-4.34.8/integrations/behave/features/__init__.py +0 -0
- seleniumbase-4.34.8/integrations/behave/features/environment.py +0 -11
- seleniumbase-4.34.8/integrations/behave/features/steps/__init__.py +0 -0
- seleniumbase-4.34.8/integrations/behave/features/steps/calculator.py +0 -144
- seleniumbase-4.34.8/integrations/behave/features/steps/fail_page.py +0 -11
- seleniumbase-4.34.8/integrations/behave/features/steps/real_world.py +0 -100
- seleniumbase-4.34.8/integrations/behave/features/steps/swag_labs.py +0 -168
- seleniumbase-4.34.8/integrations/brython/index.py +0 -5
- seleniumbase-4.34.8/integrations/node_js/__init__.py +0 -0
- seleniumbase-4.34.8/integrations/node_js/my_first_test.py +0 -25
- seleniumbase-4.34.8/integrations/node_js/test_demo_site.py +0 -119
- seleniumbase-4.34.8/mkdocs_build/prepare.py +0 -201
- seleniumbase-4.34.8/seleniumbase/behave/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/common/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/config/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/console_scripts/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/core/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/drivers/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/extensions/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/fixtures/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/js_code/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/masterqa/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/plugins/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/resources/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/utilities/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- seleniumbase-4.34.8/seleniumbase.egg-info/SOURCES.txt +0 -391
- seleniumbase-4.34.8/site/prepare.py +0 -201
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/.gitignore +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/LICENSE +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/MANIFEST.in +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/README.md +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/install.sh +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/pyproject.toml +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/pytest.ini +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/requirements.txt +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/sbase/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/sbase/__main__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/sbase/steps.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.34.8/examples → seleniumbase-4.34.9/seleniumbase/behave}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.34.8/examples/behave_bdd → seleniumbase-4.34.9/seleniumbase/common}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.34.8/examples/behave_bdd/features → seleniumbase-4.34.9/seleniumbase/config}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.34.8/examples/behave_bdd/features/steps → seleniumbase-4.34.9/seleniumbase/console_scripts}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.34.8/examples/boilerplates → seleniumbase-4.34.9/seleniumbase/core}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/sb_cdp.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.34.8/examples/boilerplates/samples → seleniumbase-4.34.9/seleniumbase/drivers}/__init__.py +0 -0
- {seleniumbase-4.34.8/examples/boilerplates/samples/file_parsing → seleniumbase-4.34.9/seleniumbase/extensions}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.34.8/examples/master_qa → seleniumbase-4.34.9/seleniumbase/fixtures}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.34.8/examples/migration/protractor → seleniumbase-4.34.9/seleniumbase/masterqa}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.34.8/examples/migration/raw_selenium → seleniumbase-4.34.9/seleniumbase/plugins}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.34.8/examples/tour_examples/recordings → seleniumbase-4.34.9/seleniumbase/utilities}/__init__.py +0 -0
- {seleniumbase-4.34.8/examples/visual_testing → seleniumbase-4.34.9/seleniumbase/utilities/selenium_grid}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.34.8/integrations → seleniumbase-4.34.9/seleniumbase/utilities/selenium_ide}/__init__.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase.egg-info/requires.txt +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/setup.cfg +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/setup.py +0 -0
- {seleniumbase-4.34.8 → seleniumbase-4.34.9}/virtualenv_install.sh +0 -0
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.34.
|
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:
|
@@ -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.
|
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.
|
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.
|
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), "")
|
{seleniumbase-4.34.8/examples/migration → seleniumbase-4.34.9/seleniumbase/js_code}/__init__.py
RENAMED
File without changes
|
File without changes
|
@@ -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
|
-
|
457
|
-
self.
|
458
|
-
|
459
|
-
self.
|
460
|
-
|
461
|
-
|
462
|
-
|
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
|
-
|
485
|
-
self.
|
486
|
-
|
487
|
-
self.
|
488
|
-
|
489
|
-
|
490
|
-
|
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
|
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
|
@@ -257,7 +261,11 @@ def start_sync(*args, **kwargs) -> Browser:
|
|
257
261
|
binary_location = None
|
258
262
|
if "browser_executable_path" in kwargs:
|
259
263
|
binary_location = kwargs["browser_executable_path"]
|
260
|
-
if
|
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
|
+
):
|
261
269
|
if "headless" in kwargs:
|
262
270
|
headless = kwargs["headless"]
|
263
271
|
decoy_args = kwargs
|
@@ -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
|
@@ -1,161 +0,0 @@
|
|
1
|
-
from behave import step
|
2
|
-
|
3
|
-
|
4
|
-
@step("Open the Swag Labs Login Page")
|
5
|
-
def go_to_swag_labs(context):
|
6
|
-
sb = context.sb
|
7
|
-
sb.open("https://www.saucedemo.com")
|
8
|
-
sb.clear_local_storage()
|
9
|
-
|
10
|
-
|
11
|
-
@step("Login to Swag Labs with {user}")
|
12
|
-
def login_to_swag_labs(context, user):
|
13
|
-
sb = context.sb
|
14
|
-
sb.type("#user-name", user)
|
15
|
-
sb.type("#password", "secret_sauce\n")
|
16
|
-
|
17
|
-
|
18
|
-
@step("Verify that the current user is logged in")
|
19
|
-
def verify_logged_in(context):
|
20
|
-
sb = context.sb
|
21
|
-
sb.assert_element("#header_container")
|
22
|
-
sb.assert_element("#react-burger-menu-btn")
|
23
|
-
sb.assert_element("#shopping_cart_container")
|
24
|
-
|
25
|
-
|
26
|
-
@step('Add "{item}" to cart')
|
27
|
-
def add_item_to_cart(context, item):
|
28
|
-
sb = context.sb
|
29
|
-
sb.click('div.inventory_item:contains("%s") button[name*="add"]' % item)
|
30
|
-
|
31
|
-
|
32
|
-
@step('Save price of "{item}" to <{var}>')
|
33
|
-
def save_price_of_item(context, item, var):
|
34
|
-
sb = context.sb
|
35
|
-
price = sb.get_text(
|
36
|
-
'div.inventory_item:contains("%s") .inventory_item_price' % item
|
37
|
-
)
|
38
|
-
sb.variables[var] = price
|
39
|
-
|
40
|
-
|
41
|
-
@step('Remove "{item}" from cart')
|
42
|
-
def remove_item_to_cart(context, item):
|
43
|
-
sb = context.sb
|
44
|
-
sb.click('div.inventory_item:contains("%s") button[name*="remove"]' % item)
|
45
|
-
|
46
|
-
|
47
|
-
@step("Verify shopping cart badge shows {number} item(s)")
|
48
|
-
def verify_badge_number(context, number):
|
49
|
-
sb = context.sb
|
50
|
-
sb.assert_exact_text(number, "span.shopping_cart_badge")
|
51
|
-
|
52
|
-
|
53
|
-
@step("Verify shopping cart badge is missing")
|
54
|
-
def verify_badge_missing(context):
|
55
|
-
sb = context.sb
|
56
|
-
sb.assert_element_not_visible("span.shopping_cart_badge")
|
57
|
-
|
58
|
-
|
59
|
-
@step("Click on shopping cart icon")
|
60
|
-
def click_shopping_cart(context):
|
61
|
-
sb = context.sb
|
62
|
-
sb.click("#shopping_cart_container a")
|
63
|
-
|
64
|
-
|
65
|
-
@step("Click Checkout")
|
66
|
-
def click_checkout(context):
|
67
|
-
sb = context.sb
|
68
|
-
sb.click("#checkout")
|
69
|
-
|
70
|
-
|
71
|
-
@step("Enter checkout info: {first_name}, {last_name}, {zip_code}")
|
72
|
-
def enter_checkout_info(context, first_name, last_name, zip_code):
|
73
|
-
sb = context.sb
|
74
|
-
sb.type("#first-name", first_name)
|
75
|
-
sb.type("#last-name", last_name)
|
76
|
-
sb.type("#postal-code", zip_code)
|
77
|
-
|
78
|
-
|
79
|
-
@step("Click Continue")
|
80
|
-
def click_continue(context):
|
81
|
-
sb = context.sb
|
82
|
-
sb.click("input#continue")
|
83
|
-
|
84
|
-
|
85
|
-
@step('Verify {quantity} "{item}"(s) in cart')
|
86
|
-
def verify_item_in_cart(context, quantity, item):
|
87
|
-
sb = context.sb
|
88
|
-
sb.assert_exact_text(
|
89
|
-
quantity, 'div.cart_item:contains("%s") div.cart_quantity' % item
|
90
|
-
)
|
91
|
-
|
92
|
-
|
93
|
-
@step('Verify cost of "{item}" is <{var}>')
|
94
|
-
def verify_cost_of_item(context, item, var):
|
95
|
-
sb = context.sb
|
96
|
-
earlier_price = sb.variables[var]
|
97
|
-
sb.assert_exact_text(
|
98
|
-
earlier_price,
|
99
|
-
'div.cart_item_label:contains("%s") .inventory_item_price' % item,
|
100
|
-
)
|
101
|
-
|
102
|
-
|
103
|
-
@step("Verify item total is {item_total}")
|
104
|
-
def verify_item_total(context, item_total):
|
105
|
-
sb = context.sb
|
106
|
-
sb.assert_exact_text(
|
107
|
-
"Item total: %s" % item_total, "div.summary_subtotal_label", timeout=1
|
108
|
-
)
|
109
|
-
|
110
|
-
|
111
|
-
@step("Verify tax amount is {tax_amount}")
|
112
|
-
def verify_tax_amount(context, tax_amount):
|
113
|
-
sb = context.sb
|
114
|
-
sb.assert_exact_text(
|
115
|
-
"Tax: %s" % tax_amount, "div.summary_tax_label", timeout=1
|
116
|
-
)
|
117
|
-
|
118
|
-
|
119
|
-
@step("Verify total cost is {total_cost}")
|
120
|
-
def verify_total_cost(context, total_cost):
|
121
|
-
sb = context.sb
|
122
|
-
sb.assert_exact_text(
|
123
|
-
"Total: %s" % total_cost, "div.summary_total_label", timeout=1
|
124
|
-
)
|
125
|
-
|
126
|
-
|
127
|
-
@step("Click Finish")
|
128
|
-
def click_finish(context):
|
129
|
-
sb = context.sb
|
130
|
-
sb.click("button#finish")
|
131
|
-
|
132
|
-
|
133
|
-
@step("Verify order complete")
|
134
|
-
def verify_order_complete(context):
|
135
|
-
sb = context.sb
|
136
|
-
sb.assert_exact_text("Thank you for your order!", "h2")
|
137
|
-
sb.assert_element('img[alt="Pony Express"]')
|
138
|
-
|
139
|
-
|
140
|
-
@step("Logout from Swag Labs")
|
141
|
-
def logout_from_swag_labs(context):
|
142
|
-
sb = context.sb
|
143
|
-
sb.js_click("a#logout_sidebar_link")
|
144
|
-
|
145
|
-
|
146
|
-
@step("Verify on Login page")
|
147
|
-
def verify_on_login_page(context):
|
148
|
-
sb = context.sb
|
149
|
-
sb.assert_element("#login-button")
|
150
|
-
|
151
|
-
|
152
|
-
@step("Sort items from Z to A")
|
153
|
-
def sort_items_from_z_to_a(context):
|
154
|
-
sb = context.sb
|
155
|
-
sb.select_option_by_text("select.product_sort_container", "Name (Z to A)")
|
156
|
-
|
157
|
-
|
158
|
-
@step('Verify "{item}" on top')
|
159
|
-
def verify_item_on_top(context, item):
|
160
|
-
sb = context.sb
|
161
|
-
sb.assert_text(item, "div.inventory_item_name")
|