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.
- {seleniumbase-4.34.7/seleniumbase.egg-info → seleniumbase-4.34.9}/PKG-INFO +1 -1
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/browser_launcher.py +21 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/sb_cdp.py +7 -2
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/base_case.py +3 -3
- {seleniumbase-4.34.7/examples/migration → seleniumbase-4.34.9/seleniumbase/js_code}/__init__.py +0 -0
- {seleniumbase-4.34.7/examples/offline_examples → seleniumbase-4.34.9/seleniumbase/resources}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/__init__.py +24 -14
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/cdp_util.py +22 -3
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/tab.py +4 -0
- {seleniumbase-4.34.7 → 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.7/examples/basic_test.py +0 -20
- seleniumbase-4.34.7/examples/behave_bdd/features/environment.py +0 -11
- seleniumbase-4.34.7/examples/behave_bdd/features/steps/calculator.py +0 -144
- seleniumbase-4.34.7/examples/behave_bdd/features/steps/fail_page.py +0 -11
- seleniumbase-4.34.7/examples/behave_bdd/features/steps/imported.py +0 -1
- seleniumbase-4.34.7/examples/behave_bdd/features/steps/swag_labs.py +0 -161
- seleniumbase-4.34.7/examples/boilerplates/base_test_case.py +0 -49
- seleniumbase-4.34.7/examples/boilerplates/boilerplate_test.py +0 -14
- seleniumbase-4.34.7/examples/boilerplates/classic_obj_test.py +0 -18
- seleniumbase-4.34.7/examples/boilerplates/page_objects.py +0 -45
- seleniumbase-4.34.7/examples/boilerplates/samples/file_parsing/parse_files.py +0 -55
- seleniumbase-4.34.7/examples/boilerplates/samples/google_objects.py +0 -12
- seleniumbase-4.34.7/examples/boilerplates/samples/google_test.py +0 -29
- seleniumbase-4.34.7/examples/boilerplates/samples/sb_swag_test.py +0 -18
- seleniumbase-4.34.7/examples/boilerplates/samples/swag_labs_test.py +0 -20
- seleniumbase-4.34.7/examples/boilerplates/samples/test_page_objects.py +0 -50
- seleniumbase-4.34.7/examples/boilerplates/sb_fixture_test.py +0 -16
- seleniumbase-4.34.7/examples/capabilities/mac_cap_file.py +0 -6
- seleniumbase-4.34.7/examples/capabilities/sample_cap_file_BS.py +0 -12
- seleniumbase-4.34.7/examples/capabilities/sample_cap_file_SL.py +0 -8
- seleniumbase-4.34.7/examples/capabilities/selenoid_cap_file.py +0 -14
- seleniumbase-4.34.7/examples/capabilities/win10_cap_file.py +0 -6
- seleniumbase-4.34.7/examples/chart_maker/chart_presentation.py +0 -37
- seleniumbase-4.34.7/examples/chart_maker/my_chart.py +0 -13
- seleniumbase-4.34.7/examples/chart_maker/pie_charts.py +0 -45
- seleniumbase-4.34.7/examples/chart_maker/test_area_chart.py +0 -19
- seleniumbase-4.34.7/examples/chart_maker/test_display_chart.py +0 -33
- seleniumbase-4.34.7/examples/chart_maker/test_line_chart.py +0 -19
- seleniumbase-4.34.7/examples/chart_maker/test_multi_series.py +0 -48
- seleniumbase-4.34.7/examples/chart_maker/test_save_chart.py +0 -33
- seleniumbase-4.34.7/examples/coffee_cart_tests.py +0 -91
- seleniumbase-4.34.7/examples/custom_settings.py +0 -124
- seleniumbase-4.34.7/examples/desktop_apps/recorder.py +0 -12
- seleniumbase-4.34.7/examples/dialog_boxes/dialog_box_tour.py +0 -123
- seleniumbase-4.34.7/examples/edge_test.py +0 -31
- seleniumbase-4.34.7/examples/github_test.py +0 -19
- seleniumbase-4.34.7/examples/gui_test_runner.py +0 -121
- seleniumbase-4.34.7/examples/hack_the_planet.py +0 -342
- seleniumbase-4.34.7/examples/handle_alert_test.py +0 -22
- seleniumbase-4.34.7/examples/iframe_tests.py +0 -52
- seleniumbase-4.34.7/examples/locale_code_test.py +0 -21
- seleniumbase-4.34.7/examples/master_qa/basic_masterqa_test_0.py +0 -15
- seleniumbase-4.34.7/examples/master_qa/masterqa_test_1.py +0 -27
- seleniumbase-4.34.7/examples/migration/protractor/example_test.py +0 -24
- seleniumbase-4.34.7/examples/migration/protractor/input_test.py +0 -10
- seleniumbase-4.34.7/examples/migration/protractor/mat_paginator_test.py +0 -27
- seleniumbase-4.34.7/examples/migration/raw_selenium/flaky_messy_raw.py +0 -73
- seleniumbase-4.34.7/examples/migration/raw_selenium/long_messy_raw.py +0 -97
- seleniumbase-4.34.7/examples/migration/raw_selenium/messy_raw.py +0 -85
- seleniumbase-4.34.7/examples/migration/raw_selenium/refined_raw.py +0 -127
- seleniumbase-4.34.7/examples/migration/raw_selenium/simple_sbase.py +0 -21
- seleniumbase-4.34.7/examples/my_first_test.py +0 -150
- seleniumbase-4.34.7/examples/nth_child_test.py +0 -37
- seleniumbase-4.34.7/examples/offline_examples/load_html_test.py +0 -21
- seleniumbase-4.34.7/examples/offline_examples/test_demo_page.py +0 -116
- seleniumbase-4.34.7/examples/offline_examples/test_extended_driver.py +0 -61
- seleniumbase-4.34.7/examples/offline_examples/test_handle_alerts.py +0 -22
- seleniumbase-4.34.7/examples/offline_examples/test_request_fixture.py +0 -26
- seleniumbase-4.34.7/examples/offline_examples/test_user_agent.py +0 -42
- seleniumbase-4.34.7/examples/old_wordle_script.py +0 -125
- seleniumbase-4.34.7/examples/parameterized_test.py +0 -19
- seleniumbase-4.34.7/examples/performance_test.py +0 -52
- seleniumbase-4.34.7/examples/presenter/core_presentation.py +0 -96
- seleniumbase-4.34.7/examples/presenter/edge_presentation.py +0 -716
- seleniumbase-4.34.7/examples/presenter/fundamentals.py +0 -416
- seleniumbase-4.34.7/examples/presenter/multi_uc.py +0 -24
- seleniumbase-4.34.7/examples/presenter/my_presentation.py +0 -138
- seleniumbase-4.34.7/examples/presenter/py_virtual_envs.py +0 -194
- seleniumbase-4.34.7/examples/presenter/uc_presentation.py +0 -560
- seleniumbase-4.34.7/examples/presenter/uc_presentation_3.py +0 -783
- seleniumbase-4.34.7/examples/proxy_test.py +0 -42
- seleniumbase-4.34.7/examples/rate_limiting_test.py +0 -21
- seleniumbase-4.34.7/examples/raw_ahrefs.py +0 -17
- seleniumbase-4.34.7/examples/raw_antibot_login.py +0 -15
- seleniumbase-4.34.7/examples/raw_bing_captcha.py +0 -6
- seleniumbase-4.34.7/examples/raw_block.py +0 -11
- seleniumbase-4.34.7/examples/raw_brotector_captcha.py +0 -9
- seleniumbase-4.34.7/examples/raw_call.py +0 -9
- seleniumbase-4.34.7/examples/raw_cdp_logging.py +0 -12
- seleniumbase-4.34.7/examples/raw_cf.py +0 -14
- seleniumbase-4.34.7/examples/raw_cookies.py +0 -19
- seleniumbase-4.34.7/examples/raw_detection.py +0 -12
- seleniumbase-4.34.7/examples/raw_driver_context.py +0 -20
- seleniumbase-4.34.7/examples/raw_driver_manager.py +0 -22
- seleniumbase-4.34.7/examples/raw_file_call.py +0 -22
- seleniumbase-4.34.7/examples/raw_form_turnstile.py +0 -20
- seleniumbase-4.34.7/examples/raw_games.py +0 -14
- seleniumbase-4.34.7/examples/raw_gui_click.py +0 -17
- seleniumbase-4.34.7/examples/raw_hobbit.py +0 -13
- seleniumbase-4.34.7/examples/raw_login_context.py +0 -12
- seleniumbase-4.34.7/examples/raw_login_driver.py +0 -15
- seleniumbase-4.34.7/examples/raw_login_sb.py +0 -12
- seleniumbase-4.34.7/examples/raw_main_call.py +0 -20
- seleniumbase-4.34.7/examples/raw_mobile.py +0 -17
- seleniumbase-4.34.7/examples/raw_multi_drivers.py +0 -27
- seleniumbase-4.34.7/examples/raw_nopecha.py +0 -8
- seleniumbase-4.34.7/examples/raw_order_tickets.py +0 -8
- seleniumbase-4.34.7/examples/raw_parameter_script.py +0 -144
- seleniumbase-4.34.7/examples/raw_performance_logs.py +0 -7
- seleniumbase-4.34.7/examples/raw_pixelscan.py +0 -19
- seleniumbase-4.34.7/examples/raw_pyautogui.py +0 -17
- seleniumbase-4.34.7/examples/raw_recaptcha.py +0 -10
- seleniumbase-4.34.7/examples/raw_robot.py +0 -17
- seleniumbase-4.34.7/examples/raw_sb.py +0 -14
- seleniumbase-4.34.7/examples/raw_test_scripts.py +0 -22
- seleniumbase-4.34.7/examples/raw_turnstile.py +0 -9
- seleniumbase-4.34.7/examples/raw_uc_mode.py +0 -12
- seleniumbase-4.34.7/examples/sb_fixture_tests.py +0 -25
- seleniumbase-4.34.7/examples/shadow_root_test.py +0 -23
- seleniumbase-4.34.7/examples/swag_labs_user_tests.py +0 -94
- seleniumbase-4.34.7/examples/test_3d_apis.py +0 -17
- seleniumbase-4.34.7/examples/test_apple_site.py +0 -36
- seleniumbase-4.34.7/examples/test_assert_elements.py +0 -14
- seleniumbase-4.34.7/examples/test_calculator.py +0 -16
- seleniumbase-4.34.7/examples/test_canvas.py +0 -49
- seleniumbase-4.34.7/examples/test_cdp_ad_blocking.py +0 -31
- seleniumbase-4.34.7/examples/test_checkboxes.py +0 -20
- seleniumbase-4.34.7/examples/test_chinese_pdf.py +0 -20
- seleniumbase-4.34.7/examples/test_chromedriver.py +0 -54
- seleniumbase-4.34.7/examples/test_coffee_cart.py +0 -23
- seleniumbase-4.34.7/examples/test_console_logging.py +0 -15
- seleniumbase-4.34.7/examples/test_contains_selector.py +0 -13
- seleniumbase-4.34.7/examples/test_cycle_elements.py +0 -16
- seleniumbase-4.34.7/examples/test_decryption.py +0 -21
- seleniumbase-4.34.7/examples/test_deferred_asserts.py +0 -23
- seleniumbase-4.34.7/examples/test_demo_site.py +0 -119
- seleniumbase-4.34.7/examples/test_detect_404s.py +0 -9
- seleniumbase-4.34.7/examples/test_docs_site.py +0 -22
- seleniumbase-4.34.7/examples/test_double_click.py +0 -21
- seleniumbase-4.34.7/examples/test_download_files.py +0 -106
- seleniumbase-4.34.7/examples/test_download_images.py +0 -58
- seleniumbase-4.34.7/examples/test_drag_and_drop.py +0 -22
- seleniumbase-4.34.7/examples/test_error_page.py +0 -17
- seleniumbase-4.34.7/examples/test_event_firing.py +0 -39
- seleniumbase-4.34.7/examples/test_fail.py +0 -16
- seleniumbase-4.34.7/examples/test_geolocation.py +0 -45
- seleniumbase-4.34.7/examples/test_get_coffee.py +0 -20
- seleniumbase-4.34.7/examples/test_get_locale_code.py +0 -12
- seleniumbase-4.34.7/examples/test_get_pdf_text.py +0 -13
- seleniumbase-4.34.7/examples/test_get_user_agent.py +0 -11
- seleniumbase-4.34.7/examples/test_hack_search.py +0 -33
- seleniumbase-4.34.7/examples/test_highlight_elements.py +0 -11
- seleniumbase-4.34.7/examples/test_image_saving.py +0 -83
- seleniumbase-4.34.7/examples/test_inspect_html.py +0 -11
- seleniumbase-4.34.7/examples/test_login.py +0 -19
- seleniumbase-4.34.7/examples/test_markers.py +0 -37
- seleniumbase-4.34.7/examples/test_mfa_login.py +0 -17
- seleniumbase-4.34.7/examples/test_multiple_drivers.py +0 -19
- seleniumbase-4.34.7/examples/test_null.py +0 -7
- seleniumbase-4.34.7/examples/test_override_driver.py +0 -31
- seleniumbase-4.34.7/examples/test_override_sb_fixture.py +0 -87
- seleniumbase-4.34.7/examples/test_parse_soup.py +0 -39
- seleniumbase-4.34.7/examples/test_pdf_asserts.py +0 -19
- seleniumbase-4.34.7/examples/test_pytest_parametrize.py +0 -24
- seleniumbase-4.34.7/examples/test_repeat_tests.py +0 -36
- seleniumbase-4.34.7/examples/test_request_sb_fixture.py +0 -22
- seleniumbase-4.34.7/examples/test_save_screenshots.py +0 -40
- seleniumbase-4.34.7/examples/test_sb_fixture.py +0 -15
- seleniumbase-4.34.7/examples/test_scrape_bing.py +0 -30
- seleniumbase-4.34.7/examples/test_select_options.py +0 -41
- seleniumbase-4.34.7/examples/test_shadow_dom.py +0 -77
- seleniumbase-4.34.7/examples/test_show_file_choosers.py +0 -28
- seleniumbase-4.34.7/examples/test_simple_login.py +0 -15
- seleniumbase-4.34.7/examples/test_skype_site.py +0 -28
- seleniumbase-4.34.7/examples/test_suite.py +0 -31
- seleniumbase-4.34.7/examples/test_swag_labs.py +0 -81
- seleniumbase-4.34.7/examples/test_tinymce.py +0 -29
- seleniumbase-4.34.7/examples/test_todomvc.py +0 -29
- seleniumbase-4.34.7/examples/test_url_asserts.py +0 -12
- seleniumbase-4.34.7/examples/test_usefixtures.py +0 -18
- seleniumbase-4.34.7/examples/test_verify_chromedriver.py +0 -33
- seleniumbase-4.34.7/examples/test_window_switching.py +0 -22
- seleniumbase-4.34.7/examples/test_xfail.py +0 -14
- seleniumbase-4.34.7/examples/test_xkcd.py +0 -16
- seleniumbase-4.34.7/examples/time_limit_test.py +0 -28
- seleniumbase-4.34.7/examples/tour_examples/bootstrap_google_tour.py +0 -87
- seleniumbase-4.34.7/examples/tour_examples/bootstrap_xkcd_tour.py +0 -20
- seleniumbase-4.34.7/examples/tour_examples/driverjs_maps_tour.py +0 -63
- seleniumbase-4.34.7/examples/tour_examples/google_tour.py +0 -95
- seleniumbase-4.34.7/examples/tour_examples/hopscotch_google_tour.py +0 -87
- seleniumbase-4.34.7/examples/tour_examples/introjs_google_tour.py +0 -88
- seleniumbase-4.34.7/examples/tour_examples/maps_introjs_tour.py +0 -64
- seleniumbase-4.34.7/examples/tour_examples/octocat_tour.py +0 -23
- seleniumbase-4.34.7/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -14
- seleniumbase-4.34.7/examples/tour_examples/shepherd_google_tour.py +0 -93
- seleniumbase-4.34.7/examples/tour_examples/xkcd_tour.py +0 -21
- seleniumbase-4.34.7/examples/translations/chinese_test_1.py +0 -28
- seleniumbase-4.34.7/examples/translations/dutch_test_1.py +0 -22
- seleniumbase-4.34.7/examples/translations/english_test_1.py +0 -18
- seleniumbase-4.34.7/examples/translations/french_test_1.py +0 -23
- seleniumbase-4.34.7/examples/translations/italian_test_1.py +0 -22
- seleniumbase-4.34.7/examples/translations/japanese_test_1.py +0 -23
- seleniumbase-4.34.7/examples/translations/korean_test_1.py +0 -21
- seleniumbase-4.34.7/examples/translations/portuguese_test_1.py +0 -25
- seleniumbase-4.34.7/examples/translations/russian_test_1.py +0 -22
- seleniumbase-4.34.7/examples/translations/spanish_test_1.py +0 -22
- seleniumbase-4.34.7/examples/uc_cdp_events.py +0 -29
- seleniumbase-4.34.7/examples/unit_tests/verify_framework.py +0 -180
- seleniumbase-4.34.7/examples/upgrade_chromedriver.py +0 -99
- seleniumbase-4.34.7/examples/upload_file_test.py +0 -21
- seleniumbase-4.34.7/examples/user_agent_test.py +0 -56
- seleniumbase-4.34.7/examples/verify_undetected.py +0 -17
- seleniumbase-4.34.7/examples/visual_testing/layout_test.py +0 -33
- seleniumbase-4.34.7/examples/visual_testing/python_home_test.py +0 -12
- seleniumbase-4.34.7/examples/visual_testing/test_layout_fail.py +0 -37
- seleniumbase-4.34.7/examples/visual_testing/xkcd_visual_test.py +0 -13
- seleniumbase-4.34.7/examples/wordle_test.py +0 -106
- seleniumbase-4.34.7/examples/xpath_test.py +0 -13
- seleniumbase-4.34.7/examples/youtube_search_test.py +0 -30
- seleniumbase-4.34.7/integrations/behave/features/__init__.py +0 -0
- seleniumbase-4.34.7/integrations/behave/features/environment.py +0 -11
- seleniumbase-4.34.7/integrations/behave/features/steps/__init__.py +0 -0
- seleniumbase-4.34.7/integrations/behave/features/steps/calculator.py +0 -144
- seleniumbase-4.34.7/integrations/behave/features/steps/fail_page.py +0 -11
- seleniumbase-4.34.7/integrations/behave/features/steps/real_world.py +0 -100
- seleniumbase-4.34.7/integrations/behave/features/steps/swag_labs.py +0 -168
- seleniumbase-4.34.7/integrations/brython/index.py +0 -5
- seleniumbase-4.34.7/integrations/node_js/__init__.py +0 -0
- seleniumbase-4.34.7/integrations/node_js/my_first_test.py +0 -25
- seleniumbase-4.34.7/integrations/node_js/test_demo_site.py +0 -119
- seleniumbase-4.34.7/mkdocs_build/prepare.py +0 -201
- seleniumbase-4.34.7/seleniumbase/behave/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/common/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/config/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/console_scripts/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/core/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/drivers/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/extensions/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/fixtures/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/js_code/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/masterqa/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/plugins/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/resources/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/utilities/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- seleniumbase-4.34.7/seleniumbase.egg-info/SOURCES.txt +0 -391
- seleniumbase-4.34.7/site/prepare.py +0 -201
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/.gitignore +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/LICENSE +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/MANIFEST.in +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/README.md +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/install.sh +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/pyproject.toml +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/pytest.ini +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/requirements.txt +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/__main__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/sbase/steps.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.34.7/examples → seleniumbase-4.34.9/seleniumbase/behave}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.34.7/examples/behave_bdd → seleniumbase-4.34.9/seleniumbase/common}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.34.7/examples/behave_bdd/features → seleniumbase-4.34.9/seleniumbase/config}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.34.7/examples/behave_bdd/features/steps → seleniumbase-4.34.9/seleniumbase/console_scripts}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.34.7/examples/boilerplates → seleniumbase-4.34.9/seleniumbase/core}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.34.7/examples/boilerplates/samples → seleniumbase-4.34.9/seleniumbase/drivers}/__init__.py +0 -0
- {seleniumbase-4.34.7/examples/boilerplates/samples/file_parsing → seleniumbase-4.34.9/seleniumbase/extensions}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.34.7/examples/master_qa → seleniumbase-4.34.9/seleniumbase/fixtures}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.34.7/examples/migration/protractor → seleniumbase-4.34.9/seleniumbase/masterqa}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.34.7/examples/migration/raw_selenium → seleniumbase-4.34.9/seleniumbase/plugins}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.34.7/examples/tour_examples/recordings → seleniumbase-4.34.9/seleniumbase/utilities}/__init__.py +0 -0
- {seleniumbase-4.34.7/examples/visual_testing → seleniumbase-4.34.9/seleniumbase/utilities/selenium_grid}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.34.7/integrations → seleniumbase-4.34.9/seleniumbase/utilities/selenium_ide}/__init__.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/requires.txt +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/setup.cfg +0 -0
- {seleniumbase-4.34.7 → seleniumbase-4.34.9}/setup.py +0 -0
- {seleniumbase-4.34.7 → 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:
|
@@ -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
|
-
|
881
|
-
|
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.
|
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.7/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
|
@@ -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 =
|
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
|
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))
|
@@ -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
|