seleniumbase 4.34.0__tar.gz → 4.34.2__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/.gitignore +14 -0
- {seleniumbase-4.34.0/seleniumbase.egg-info → seleniumbase-4.34.2}/PKG-INFO +2 -2
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/proxy_test.py +17 -5
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_pixelscan.py +5 -3
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_cdp_ad_blocking.py +1 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/youtube_search_test.py +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/requirements.txt +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/behave/behave_sb.py +10 -2
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/run.py +6 -2
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_install.py +235 -6
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/browser_launcher.py +146 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/sb_cdp.py +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/base_case.py +10 -5
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/constants.py +3 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/driver_manager.py +28 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/pytest_plugin.py +9 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/sb_manager.py +28 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/selenium_plugin.py +9 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/patcher.py +16 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2/seleniumbase.egg-info}/PKG-INFO +2 -2
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase.egg-info/requires.txt +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/setup.py +1 -1
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/LICENSE +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/MANIFEST.in +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/README.md +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/basic_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/environment.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/steps/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/steps/calculator.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/steps/fail_page.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/steps/imported.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/base_test_case.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/boilerplate_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/classic_obj_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/page_objects.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/google_objects.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/google_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/sb_swag_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/swag_labs_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/samples/test_page_objects.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/boilerplates/sb_fixture_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/capabilities/mac_cap_file.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/capabilities/sample_cap_file_BS.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/capabilities/sample_cap_file_SL.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/capabilities/selenoid_cap_file.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/capabilities/win10_cap_file.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/chart_presentation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/my_chart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/pie_charts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/test_area_chart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/test_display_chart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/test_line_chart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/test_multi_series.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/chart_maker/test_save_chart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/coffee_cart_tests.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/custom_settings.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/desktop_apps/recorder.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/dialog_boxes/dialog_box_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/edge_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/github_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/gui_test_runner.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/hack_the_planet.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/handle_alert_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/iframe_tests.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/locale_code_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/master_qa/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/master_qa/basic_masterqa_test_0.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/master_qa/masterqa_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/protractor/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/protractor/example_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/protractor/input_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/protractor/mat_paginator_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/messy_raw.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/refined_raw.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/migration/raw_selenium/simple_sbase.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/my_first_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/nth_child_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/load_html_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/test_demo_page.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/test_extended_driver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/test_handle_alerts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/test_request_fixture.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/offline_examples/test_user_agent.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/old_wordle_script.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/parameterized_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/performance_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/core_presentation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/edge_presentation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/fundamentals.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/multi_uc.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/my_presentation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/py_virtual_envs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/uc_presentation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/presenter/uc_presentation_3.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/rate_limiting_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_ahrefs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_antibot_login.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_bing_captcha.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_block.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_brotector_captcha.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_call.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_cdp_logging.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_cf.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_cookies.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_detection.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_driver_context.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_driver_manager.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_file_call.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_form_turnstile.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_games.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_gui_click.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_hobbit.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_login_context.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_login_driver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_login_sb.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_main_call.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_mobile.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_multi_drivers.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_nopecha.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_order_tickets.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_parameter_script.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_performance_logs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_pyautogui.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_recaptcha.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_robot.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_sb.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_test_scripts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_turnstile.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/raw_uc_mode.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/sb_fixture_tests.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/shadow_root_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/swag_labs_user_tests.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_3d_apis.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_apple_site.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_assert_elements.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_calculator.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_canvas.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_checkboxes.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_chinese_pdf.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_chromedriver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_coffee_cart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_console_logging.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_contains_selector.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_cycle_elements.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_decryption.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_deferred_asserts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_demo_site.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_detect_404s.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_docs_site.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_double_click.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_download_files.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_download_images.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_drag_and_drop.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_error_page.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_event_firing.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_fail.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_geolocation.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_get_coffee.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_get_locale_code.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_get_pdf_text.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_get_user_agent.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_hack_search.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_highlight_elements.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_image_saving.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_inspect_html.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_login.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_markers.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_mfa_login.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_multiple_drivers.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_null.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_override_driver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_override_sb_fixture.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_parse_soup.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_pdf_asserts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_pytest_parametrize.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_repeat_tests.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_request_sb_fixture.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_save_screenshots.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_sb_fixture.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_scrape_bing.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_select_options.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_shadow_dom.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_show_file_choosers.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_simple_login.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_skype_site.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_suite.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_swag_labs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_tinymce.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_todomvc.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_url_asserts.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_usefixtures.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_verify_chromedriver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_window_switching.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_xfail.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/test_xkcd.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/time_limit_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/bootstrap_google_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/driverjs_maps_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/google_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/hopscotch_google_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/introjs_google_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/maps_introjs_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/octocat_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/recordings/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/shepherd_google_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/tour_examples/xkcd_tour.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/chinese_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/dutch_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/english_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/french_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/italian_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/japanese_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/korean_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/portuguese_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/russian_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/translations/spanish_test_1.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/uc_cdp_events.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/unit_tests/verify_framework.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/upgrade_chromedriver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/upload_file_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/user_agent_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/verify_undetected.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/visual_testing/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/visual_testing/layout_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/visual_testing/python_home_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/visual_testing/test_layout_fail.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/visual_testing/xkcd_visual_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/wordle_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/examples/xpath_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/install.sh +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/environment.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/steps/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/steps/calculator.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/steps/fail_page.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/steps/real_world.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/behave/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/brython/index.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/node_js/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/node_js/my_first_test.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/integrations/node_js/test_demo_site.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/mkdocs_build/prepare.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/pyproject.toml +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/pytest.ini +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/sbase/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/sbase/__main__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/sbase/steps.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/setup.cfg +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/site/prepare.py +0 -0
- {seleniumbase-4.34.0 → seleniumbase-4.34.2}/virtualenv_install.sh +0 -0
@@ -82,6 +82,20 @@ msedgedriver.exe
|
|
82
82
|
operadriver.exe
|
83
83
|
uc_driver.exe
|
84
84
|
|
85
|
+
# Chrome for Testing folders
|
86
|
+
chrome-mac-arm64
|
87
|
+
chrome-mac-x64
|
88
|
+
chrome-linux64
|
89
|
+
chrome-win64
|
90
|
+
chrome-win32
|
91
|
+
|
92
|
+
# Chrome-Headless-Shell folders
|
93
|
+
chrome-headless-shell-mac-arm64
|
94
|
+
chrome-headless-shell-mac-x64
|
95
|
+
chrome-headless-shell-linux64
|
96
|
+
chrome-headless-shell-win64
|
97
|
+
chrome-headless-shell-win32
|
98
|
+
|
85
99
|
# msedgedriver requirements
|
86
100
|
libc++.dylib
|
87
101
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.34.
|
3
|
+
Version: 4.34.2
|
4
4
|
Summary: A complete web automation framework for end-to-end testing.
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
6
6
|
Author: Michael Mintz
|
@@ -104,7 +104,7 @@ Requires-Dist: trio-websocket==0.11.1
|
|
104
104
|
Requires-Dist: wsproto==1.2.0
|
105
105
|
Requires-Dist: websocket-client==1.8.0
|
106
106
|
Requires-Dist: selenium==4.27.1; python_version < "3.9"
|
107
|
-
Requires-Dist: selenium==4.28.
|
107
|
+
Requires-Dist: selenium==4.28.1; python_version >= "3.9"
|
108
108
|
Requires-Dist: cssselect==1.2.0
|
109
109
|
Requires-Dist: sortedcontainers==2.4.0
|
110
110
|
Requires-Dist: execnet==2.1.1
|
@@ -13,12 +13,24 @@ class ProxyTests(BaseCase):
|
|
13
13
|
if not self.page_load_strategy == "none" and not self.undetectable:
|
14
14
|
# This page takes too long to load otherwise
|
15
15
|
self.get_new_driver(page_load_strategy="none")
|
16
|
+
self.open("https://api.ipify.org/")
|
17
|
+
ip_address = self.get_text("body")
|
16
18
|
self.open("https://ipinfo.io/")
|
17
|
-
self.
|
18
|
-
|
19
|
+
self.type('input[name="search"]', ip_address, timeout=20)
|
20
|
+
self.click("form button span")
|
21
|
+
self.sleep(2)
|
22
|
+
self.click_if_visible("span.cursor-pointer", timeout=4)
|
19
23
|
print("\n\nMy IP Address = %s\n" % ip_address)
|
20
24
|
print("Displaying Host Info:")
|
21
|
-
text = self.get_text("#
|
25
|
+
text = self.get_text("#block-summary").split("Hosted domains")[0]
|
26
|
+
rows = text.split("\n")
|
27
|
+
data = []
|
28
|
+
for row in rows:
|
29
|
+
if row.strip() != "":
|
30
|
+
data.append(row.strip())
|
31
|
+
print("\n".join(data).replace('\n"', " "))
|
32
|
+
print("\nDisplaying Geolocation Info:")
|
33
|
+
text = self.get_text("#block-geolocation").split("Coordinates")[0]
|
22
34
|
rows = text.split("\n")
|
23
35
|
data = []
|
24
36
|
for row in rows:
|
@@ -26,5 +38,5 @@ class ProxyTests(BaseCase):
|
|
26
38
|
data.append(row.strip())
|
27
39
|
print("\n".join(data).replace('\n"', " "))
|
28
40
|
if not self.headless:
|
29
|
-
print("\nThe browser will close automatically in
|
30
|
-
self.sleep(
|
41
|
+
print("\nThe browser will close automatically in 3 seconds...")
|
42
|
+
self.sleep(3)
|
@@ -2,16 +2,18 @@ from seleniumbase import SB
|
|
2
2
|
|
3
3
|
with SB(uc=True, incognito=True, test=True) as sb:
|
4
4
|
sb.driver.uc_open_with_reconnect("https://pixelscan.net/", 7)
|
5
|
-
sb.remove_elements("
|
5
|
+
sb.remove_elements(".bg-bannerBg") # Remove the top banner
|
6
|
+
sb.remove_elements("pxlscn-ad1") # Remove the ad banner
|
6
7
|
sb.remove_elements("jdiv") # Remove chat widgets
|
7
8
|
no_automation_detected = "No automation framework detected"
|
8
9
|
sb.assert_text(no_automation_detected, "pxlscn-bot-detection")
|
9
10
|
not_masking_text = "You are not masking your fingerprint"
|
10
11
|
sb.assert_text(not_masking_text, "pxlscn-fingerprint-masking")
|
11
|
-
|
12
|
+
consistent_selector = 'div.bg-consistentBg [alt="Good"]'
|
13
|
+
sb.highlight(consistent_selector, loops=8, scroll=False)
|
12
14
|
sb.sleep(1)
|
13
15
|
fingerprint_masking_div = "pxlscn-fingerprint-masking div"
|
14
16
|
sb.highlight(fingerprint_masking_div, loops=9, scroll=False)
|
15
17
|
sb.sleep(1)
|
16
|
-
sb.highlight("
|
18
|
+
sb.highlight("pxlscn-bot-detection", loops=10, scroll=False)
|
17
19
|
sb.sleep(2)
|
@@ -24,6 +24,7 @@ class CDPNetworkBlockingTests(BaseCase):
|
|
24
24
|
]})
|
25
25
|
self.execute_cdp_cmd('Network.enable', {})
|
26
26
|
self.open('https://www.w3schools.com/jquery/default.asp')
|
27
|
+
self.ad_block()
|
27
28
|
source = self.get_page_source()
|
28
29
|
self.assert_true("doubleclick.net" not in source)
|
29
30
|
self.assert_true("google-analytics.com" not in source)
|
@@ -11,7 +11,7 @@ class YouTubeSearchTests(BaseCase):
|
|
11
11
|
self.skip("Unsupported mode for this test.")
|
12
12
|
self.open("https://www.youtube.com/c/MichaelMintz")
|
13
13
|
search_term = "seleniumbase"
|
14
|
-
search_selector =
|
14
|
+
search_selector = 'input[name="search_query"]'
|
15
15
|
results_selector = '[role="listbox"]'
|
16
16
|
self.click_if_visible('button[aria-label="Close"]')
|
17
17
|
self.double_click(search_selector)
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.34.
|
2
|
+
__version__ = "4.34.2"
|
@@ -482,8 +482,8 @@ def get_configured_sb(context):
|
|
482
482
|
extension_dir = sb.extension_dir # revert to default
|
483
483
|
sb.extension_dir = extension_dir
|
484
484
|
continue
|
485
|
-
# Handle: -D binary-location=PATH / binary_location=PATH
|
486
|
-
if low_key in ["binary-location", "binary_location"]:
|
485
|
+
# Handle: -D binary-location=PATH / binary_location=PATH / bl=PATH
|
486
|
+
if low_key in ["binary-location", "binary_location", "bl"]:
|
487
487
|
binary_location = userdata[key]
|
488
488
|
if binary_location == "true":
|
489
489
|
binary_location = sb.binary_location # revert to default
|
@@ -884,6 +884,14 @@ def get_configured_sb(context):
|
|
884
884
|
sb.headless = True # Firefox has regular headless
|
885
885
|
elif sb.browser not in ["chrome", "edge"]:
|
886
886
|
sb.headless2 = False # Only for Chromium browsers
|
887
|
+
if (
|
888
|
+
sb.binary_location
|
889
|
+
and sb.binary_location.lower() == "chs"
|
890
|
+
and sb.browser == "chrome"
|
891
|
+
):
|
892
|
+
sb.headless = True
|
893
|
+
sb.headless1 = False
|
894
|
+
sb.headless2 = False
|
887
895
|
# Recorder Mode only supports Chromium browsers.
|
888
896
|
if sb.recorder_ext and (sb.browser not in ["chrome", "edge"]):
|
889
897
|
raise Exception(
|
@@ -139,8 +139,8 @@ def show_install_usage():
|
|
139
139
|
print(" OR: seleniumbase get [DRIVER_NAME] [OPTIONS]")
|
140
140
|
print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
|
141
141
|
print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
|
142
|
-
print(" (Drivers: chromedriver,
|
143
|
-
print(" edgedriver,
|
142
|
+
print(" (Drivers: chromedriver, cft, uc_driver,")
|
143
|
+
print(" edgedriver, chs, geckodriver)")
|
144
144
|
print(" Options:")
|
145
145
|
print(" VERSION Specify the version to download.")
|
146
146
|
print(" Tries to detect the needed version.")
|
@@ -157,11 +157,15 @@ def show_install_usage():
|
|
157
157
|
print(" sbase get chromedriver stable")
|
158
158
|
print(" sbase get chromedriver beta")
|
159
159
|
print(" sbase get chromedriver -p")
|
160
|
+
print(" sbase get cft 131")
|
161
|
+
print(" sbase get chs")
|
160
162
|
print(" Output:")
|
161
163
|
print(" Downloads the webdriver to seleniumbase/drivers/")
|
162
164
|
print(" (chromedriver is required for Chrome automation)")
|
163
165
|
print(" (geckodriver is required for Firefox automation)")
|
164
166
|
print(" (edgedriver is required for MS__Edge automation)")
|
167
|
+
print(" (cft is for the `Chrome for Testing` binary exe)")
|
168
|
+
print(" (chs is for the `Chrome-Headless-Shell` binary.)")
|
165
169
|
print("")
|
166
170
|
|
167
171
|
|
@@ -3,7 +3,7 @@ Downloads the specified webdriver to "seleniumbase/drivers/"
|
|
3
3
|
|
4
4
|
Usage:
|
5
5
|
sbase get {chromedriver|geckodriver|edgedriver|
|
6
|
-
iedriver|uc_driver} [OPTIONS]
|
6
|
+
iedriver|uc_driver|cft|chs} [OPTIONS]
|
7
7
|
Options:
|
8
8
|
VERSION Specify the version.
|
9
9
|
Tries to detect the needed version.
|
@@ -19,6 +19,8 @@ Examples:
|
|
19
19
|
sbase get chromedriver stable
|
20
20
|
sbase get chromedriver beta
|
21
21
|
sbase get chromedriver -p
|
22
|
+
sbase get cft 131
|
23
|
+
sbase get chs
|
22
24
|
Output:
|
23
25
|
Downloads the webdriver to seleniumbase/drivers/
|
24
26
|
(chromedriver is required for Chrome automation)
|
@@ -31,6 +33,7 @@ import os
|
|
31
33
|
import platform
|
32
34
|
import requests
|
33
35
|
import shutil
|
36
|
+
import subprocess
|
34
37
|
import sys
|
35
38
|
import time
|
36
39
|
import tarfile
|
@@ -61,8 +64,8 @@ def invalid_run_command():
|
|
61
64
|
exp += " OR sbase install [DRIVER_NAME] [OPTIONS]\n"
|
62
65
|
exp += " OR seleniumbase get [DRIVER_NAME] [OPTIONS]\n"
|
63
66
|
exp += " OR sbase get [DRIVER_NAME] [OPTIONS]\n"
|
64
|
-
exp += " (Drivers: chromedriver,
|
65
|
-
exp += " edgedriver,
|
67
|
+
exp += " (Drivers: chromedriver, cft, uc_driver,\n"
|
68
|
+
exp += " edgedriver, chs, geckodriver)\n"
|
66
69
|
exp += " Options:\n"
|
67
70
|
exp += " VERSION Specify the version.\n"
|
68
71
|
exp += " Tries to detect the needed version.\n"
|
@@ -79,11 +82,15 @@ def invalid_run_command():
|
|
79
82
|
exp += " sbase get chromedriver stable\n"
|
80
83
|
exp += " sbase get chromedriver beta\n"
|
81
84
|
exp += " sbase get chromedriver -p\n"
|
85
|
+
exp += " sbase get cft 131\n"
|
86
|
+
exp += " sbase get chs\n"
|
82
87
|
exp += " Output:\n"
|
83
88
|
exp += " Downloads the webdriver to seleniumbase/drivers/\n"
|
84
89
|
exp += " (chromedriver is required for Chrome automation)\n"
|
85
90
|
exp += " (geckodriver is required for Firefox automation)\n"
|
86
91
|
exp += " (edgedriver is required for MS__Edge automation)\n"
|
92
|
+
exp += " (cft is for the `Chrome for Testing` binary exe)\n"
|
93
|
+
exp += " (chs is for the `Chrome-Headless-Shell` binary.)\n"
|
87
94
|
print("")
|
88
95
|
raise Exception("%s\n\n%s" % (constants.Warnings.INVALID_RUN_COMMAND, exp))
|
89
96
|
|
@@ -265,6 +272,16 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
265
272
|
elif override.startswith("iedriver "):
|
266
273
|
extra = override.split("iedriver ")[1]
|
267
274
|
sys.argv = ["seleniumbase", "get", "iedriver", extra]
|
275
|
+
elif override == "cft":
|
276
|
+
sys.argv = ["seleniumbase", "get", "cft"]
|
277
|
+
elif override.startswith("cft "):
|
278
|
+
extra = override.split("cft ")[1]
|
279
|
+
sys.argv = ["seleniumbase", "get", "cft", extra]
|
280
|
+
elif override == "chs":
|
281
|
+
sys.argv = ["seleniumbase", "get", "chs"]
|
282
|
+
elif override.startswith("chs "):
|
283
|
+
extra = override.split("chs ")[1]
|
284
|
+
sys.argv = ["seleniumbase", "get", "chs", extra]
|
268
285
|
if found_proxy:
|
269
286
|
sys.argv.append(found_proxy)
|
270
287
|
|
@@ -550,6 +567,134 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
550
567
|
raise Exception("Could not find chromedriver to download!\n")
|
551
568
|
if not get_latest:
|
552
569
|
pass
|
570
|
+
elif name == "chrome" or name == "cft":
|
571
|
+
set_version = None
|
572
|
+
found_version = None
|
573
|
+
use_version = None
|
574
|
+
major_version = None
|
575
|
+
if num_args >= 4:
|
576
|
+
set_version = sys.argv[3]
|
577
|
+
if (
|
578
|
+
set_version
|
579
|
+
and set_version.split(".")[0].isnumeric()
|
580
|
+
and int(set_version.split(".")[0]) >= 113
|
581
|
+
):
|
582
|
+
major_version = set_version.split(".")[0]
|
583
|
+
elif (
|
584
|
+
not set_version
|
585
|
+
or set_version.lower() == "latest"
|
586
|
+
or set_version.lower() == "stable"
|
587
|
+
):
|
588
|
+
found_version = get_latest_stable_chromedriver_version()
|
589
|
+
elif (
|
590
|
+
set_version and (
|
591
|
+
set_version.lower() == "latest-1"
|
592
|
+
or set_version.lower() == "previous"
|
593
|
+
)
|
594
|
+
):
|
595
|
+
found_version = get_latest_stable_chromedriver_version()
|
596
|
+
major_version = str(int(found_version.split(".")[0]) - 1)
|
597
|
+
found_version = None
|
598
|
+
elif (set_version and set_version.lower() == "beta"):
|
599
|
+
found_version = get_latest_beta_chromedriver_version()
|
600
|
+
elif (set_version and set_version.lower() == "dev"):
|
601
|
+
found_version = get_latest_dev_chromedriver_version()
|
602
|
+
elif (set_version and set_version.lower() == "canary"):
|
603
|
+
found_version = get_latest_canary_chromedriver_version()
|
604
|
+
if found_version and found_version.split(".")[0].isnumeric():
|
605
|
+
major_version = found_version.split(".")[0]
|
606
|
+
use_version = found_version
|
607
|
+
if not use_version:
|
608
|
+
use_version = get_cft_latest_version_from_milestone(major_version)
|
609
|
+
msg = c2 + "Chrome for Testing to download" + cr
|
610
|
+
p_version = c3 + use_version + cr
|
611
|
+
log_d("\n*** %s = %s" % (msg, p_version))
|
612
|
+
if IS_MAC:
|
613
|
+
if IS_ARM_MAC:
|
614
|
+
platform_code = "mac-arm64"
|
615
|
+
file_name = "chrome-mac-arm64.zip"
|
616
|
+
else:
|
617
|
+
platform_code = "mac-x64"
|
618
|
+
file_name = "chrome-mac-x64.zip"
|
619
|
+
elif IS_LINUX:
|
620
|
+
platform_code = "linux64"
|
621
|
+
file_name = "chrome-linux64.zip"
|
622
|
+
elif IS_WINDOWS:
|
623
|
+
if "64" in ARCH:
|
624
|
+
platform_code = "win64"
|
625
|
+
file_name = "chrome-win64.zip"
|
626
|
+
else:
|
627
|
+
platform_code = "win32"
|
628
|
+
file_name = "chrome-win32.zip"
|
629
|
+
plat_arch = file_name.split(".zip")[0]
|
630
|
+
download_url = (
|
631
|
+
"https://storage.googleapis.com/chrome-for-testing-public/"
|
632
|
+
"%s/%s/%s" % (use_version, platform_code, file_name)
|
633
|
+
)
|
634
|
+
elif name == "chrome-headless-shell" or name == "chs":
|
635
|
+
set_version = None
|
636
|
+
found_version = None
|
637
|
+
use_version = None
|
638
|
+
major_version = None
|
639
|
+
if num_args >= 4:
|
640
|
+
set_version = sys.argv[3]
|
641
|
+
if (
|
642
|
+
set_version
|
643
|
+
and set_version.split(".")[0].isnumeric()
|
644
|
+
and int(set_version.split(".")[0]) >= 113
|
645
|
+
):
|
646
|
+
major_version = set_version.split(".")[0]
|
647
|
+
elif (
|
648
|
+
not set_version
|
649
|
+
or set_version.lower() == "latest"
|
650
|
+
or set_version.lower() == "stable"
|
651
|
+
):
|
652
|
+
found_version = get_latest_stable_chromedriver_version()
|
653
|
+
elif (
|
654
|
+
set_version and (
|
655
|
+
set_version.lower() == "latest-1"
|
656
|
+
or set_version.lower() == "previous"
|
657
|
+
)
|
658
|
+
):
|
659
|
+
found_version = get_latest_stable_chromedriver_version()
|
660
|
+
major_version = str(int(found_version.split(".")[0]) - 1)
|
661
|
+
found_version = None
|
662
|
+
elif (set_version and set_version.lower() == "beta"):
|
663
|
+
found_version = get_latest_beta_chromedriver_version()
|
664
|
+
elif (set_version and set_version.lower() == "dev"):
|
665
|
+
found_version = get_latest_dev_chromedriver_version()
|
666
|
+
elif (set_version and set_version.lower() == "canary"):
|
667
|
+
found_version = get_latest_canary_chromedriver_version()
|
668
|
+
if found_version and found_version.split(".")[0].isnumeric():
|
669
|
+
major_version = found_version.split(".")[0]
|
670
|
+
use_version = found_version
|
671
|
+
if not use_version:
|
672
|
+
use_version = get_cft_latest_version_from_milestone(major_version)
|
673
|
+
msg = c2 + "Chrome-Headless-Shell to download" + cr
|
674
|
+
p_version = c3 + use_version + cr
|
675
|
+
log_d("\n*** %s = %s" % (msg, p_version))
|
676
|
+
if IS_MAC:
|
677
|
+
if IS_ARM_MAC:
|
678
|
+
platform_code = "mac-arm64"
|
679
|
+
file_name = "chrome-headless-shell-mac-arm64.zip"
|
680
|
+
else:
|
681
|
+
platform_code = "mac-x64"
|
682
|
+
file_name = "chrome-headless-shell-mac-x64.zip"
|
683
|
+
elif IS_LINUX:
|
684
|
+
platform_code = "linux64"
|
685
|
+
file_name = "chrome-headless-shell-linux64.zip"
|
686
|
+
elif IS_WINDOWS:
|
687
|
+
if "64" in ARCH:
|
688
|
+
platform_code = "win64"
|
689
|
+
file_name = "chrome-headless-shell-win64.zip"
|
690
|
+
else:
|
691
|
+
platform_code = "win32"
|
692
|
+
file_name = "chrome-headless-shell-win32.zip"
|
693
|
+
plat_arch = file_name.split(".zip")[0]
|
694
|
+
download_url = (
|
695
|
+
"https://storage.googleapis.com/chrome-for-testing-public/"
|
696
|
+
"%s/%s/%s" % (use_version, platform_code, file_name)
|
697
|
+
)
|
553
698
|
elif name == "geckodriver" or name == "firefoxdriver":
|
554
699
|
use_version = DEFAULT_GECKODRIVER_VERSION
|
555
700
|
found_geckodriver = False
|
@@ -1029,10 +1174,14 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
1029
1174
|
if os.path.exists(os.path.join(downloads_folder, "Driver_Notes/")):
|
1030
1175
|
# Only works if the directory is empty
|
1031
1176
|
os.rmdir(os.path.join(downloads_folder, "Driver_Notes/"))
|
1032
|
-
|
1177
|
+
driver_base = os.sep.join(driver_path.split(os.sep)[:-1])
|
1178
|
+
driver_file = driver_path.split(os.sep)[-1]
|
1179
|
+
pr_driver_base = c3 + driver_base + cr
|
1180
|
+
pr_sep = c3 + os.sep + cr
|
1181
|
+
pr_driver_file = c3 + driver_file + cr
|
1033
1182
|
log_d(
|
1034
|
-
"The file [%s] was saved to:\n%s\n"
|
1035
|
-
% (driver_file,
|
1183
|
+
"The file [%s] was saved to:\n%s%s\n%s\n"
|
1184
|
+
% (driver_file, pr_driver_base, pr_sep, pr_driver_file)
|
1036
1185
|
)
|
1037
1186
|
log_d("Making [%s %s] executable ..." % (driver_file, use_version))
|
1038
1187
|
make_executable(driver_path)
|
@@ -1046,6 +1195,86 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
1046
1195
|
make_executable(path_file)
|
1047
1196
|
log_d("Also copied to: %s%s%s" % (c3, path_file, cr))
|
1048
1197
|
log_d("")
|
1198
|
+
elif name == "chrome" or name == "cft":
|
1199
|
+
# Zip file is valid. Proceed.
|
1200
|
+
driver_path = None
|
1201
|
+
driver_file = None
|
1202
|
+
base_path = os.sep.join(zip_file_path.split(os.sep)[:-1])
|
1203
|
+
folder_name = contents[0].split(os.sep)[0]
|
1204
|
+
folder_path = os.path.join(base_path, folder_name)
|
1205
|
+
if IS_MAC or IS_LINUX:
|
1206
|
+
if (
|
1207
|
+
"chrome-" in folder_path
|
1208
|
+
and "drivers" in folder_path
|
1209
|
+
and os.path.exists(folder_path)
|
1210
|
+
):
|
1211
|
+
shutil.rmtree(folder_path)
|
1212
|
+
subprocess.run(
|
1213
|
+
["unzip", zip_file_path, "-d", downloads_folder]
|
1214
|
+
)
|
1215
|
+
elif IS_WINDOWS:
|
1216
|
+
subprocess.run(
|
1217
|
+
[
|
1218
|
+
"powershell",
|
1219
|
+
"Expand-Archive",
|
1220
|
+
"-Path",
|
1221
|
+
zip_file_path,
|
1222
|
+
"-DestinationPath",
|
1223
|
+
downloads_folder,
|
1224
|
+
]
|
1225
|
+
)
|
1226
|
+
else:
|
1227
|
+
zip_ref.extractall(downloads_folder)
|
1228
|
+
zip_ref.close()
|
1229
|
+
os.remove(zip_file_path)
|
1230
|
+
log_d("%sUnzip Complete!%s\n" % (c2, cr))
|
1231
|
+
pr_base_path = c3 + base_path + cr
|
1232
|
+
pr_sep = c3 + os.sep + cr
|
1233
|
+
pr_folder_name = c3 + folder_name + cr
|
1234
|
+
log_d(
|
1235
|
+
"Chrome for Testing was saved inside:\n%s%s\n%s\n"
|
1236
|
+
% (pr_base_path, pr_sep, pr_folder_name)
|
1237
|
+
)
|
1238
|
+
elif name == "chrome-headless-shell" or name == "chs":
|
1239
|
+
# Zip file is valid. Proceed.
|
1240
|
+
driver_path = None
|
1241
|
+
driver_file = None
|
1242
|
+
base_path = os.sep.join(zip_file_path.split(os.sep)[:-1])
|
1243
|
+
folder_name = contents[0].split(os.sep)[0]
|
1244
|
+
folder_path = os.path.join(base_path, folder_name)
|
1245
|
+
if IS_MAC or IS_LINUX:
|
1246
|
+
if (
|
1247
|
+
"chrome-headless-shell-" in folder_path
|
1248
|
+
and "drivers" in folder_path
|
1249
|
+
and os.path.exists(folder_path)
|
1250
|
+
):
|
1251
|
+
shutil.rmtree(folder_path)
|
1252
|
+
subprocess.run(
|
1253
|
+
["unzip", zip_file_path, "-d", downloads_folder]
|
1254
|
+
)
|
1255
|
+
elif IS_WINDOWS:
|
1256
|
+
subprocess.run(
|
1257
|
+
[
|
1258
|
+
"powershell",
|
1259
|
+
"Expand-Archive",
|
1260
|
+
"-Path",
|
1261
|
+
zip_file_path,
|
1262
|
+
"-DestinationPath",
|
1263
|
+
downloads_folder,
|
1264
|
+
]
|
1265
|
+
)
|
1266
|
+
else:
|
1267
|
+
zip_ref.extractall(downloads_folder)
|
1268
|
+
zip_ref.close()
|
1269
|
+
os.remove(zip_file_path)
|
1270
|
+
log_d("%sUnzip Complete!%s\n" % (c2, cr))
|
1271
|
+
pr_base_path = c3 + base_path + cr
|
1272
|
+
pr_sep = c3 + os.sep + cr
|
1273
|
+
pr_folder_name = c3 + folder_name + cr
|
1274
|
+
log_d(
|
1275
|
+
"Chrome-Headless-Shell was saved inside:\n%s%s\n%s\n"
|
1276
|
+
% (pr_base_path, pr_sep, pr_folder_name)
|
1277
|
+
)
|
1049
1278
|
elif len(contents) == 0:
|
1050
1279
|
raise Exception("Zip file %s is empty!" % zip_file_path)
|
1051
1280
|
else:
|