seleniumbase 4.32.5a1__tar.gz → 4.32.6__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {seleniumbase-4.32.5a1/seleniumbase.egg-info → seleniumbase-4.32.6}/PKG-INFO +4 -3
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_pixelscan.py +1 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/requirements.txt +3 -2
- seleniumbase-4.32.6/seleniumbase/__version__.py +2 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/browser_launcher.py +5 -1
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/sb_cdp.py +203 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/__init__.py +3 -2
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/cdp_util.py +124 -1
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6/seleniumbase.egg-info}/PKG-INFO +4 -3
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase.egg-info/requires.txt +3 -2
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/setup.py +3 -2
- seleniumbase-4.32.5a1/seleniumbase/__version__.py +0 -2
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/.gitignore +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/LICENSE +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/MANIFEST.in +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/README.md +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/basic_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/environment.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/calculator.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/fail_page.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/imported.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/base_test_case.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/boilerplate_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/classic_obj_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/page_objects.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/google_objects.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/google_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/sb_swag_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/swag_labs_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/test_page_objects.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/sb_fixture_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/capabilities/mac_cap_file.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/capabilities/sample_cap_file_BS.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/capabilities/sample_cap_file_SL.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/capabilities/selenoid_cap_file.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/capabilities/win10_cap_file.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/chart_presentation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/my_chart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/pie_charts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/test_area_chart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/test_display_chart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/test_line_chart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/test_multi_series.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/chart_maker/test_save_chart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/coffee_cart_tests.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/custom_settings.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/desktop_apps/recorder.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/dialog_boxes/dialog_box_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/edge_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/github_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/gui_test_runner.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/hack_the_planet.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/handle_alert_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/iframe_tests.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/locale_code_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/master_qa/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/master_qa/basic_masterqa_test_0.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/master_qa/masterqa_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/protractor/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/protractor/example_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/protractor/input_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/protractor/mat_paginator_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/messy_raw.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/refined_raw.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/migration/raw_selenium/simple_sbase.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/my_first_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/nth_child_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/load_html_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/test_demo_page.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/test_extended_driver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/test_handle_alerts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/test_request_fixture.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/offline_examples/test_user_agent.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/old_wordle_script.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/parameterized_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/performance_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/core_presentation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/edge_presentation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/fundamentals.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/multi_uc.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/my_presentation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/py_virtual_envs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/uc_presentation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/presenter/uc_presentation_3.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/proxy_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/rate_limiting_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_ahrefs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_antibot_login.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_bing_captcha.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_block.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_brotector_captcha.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_call.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_cdp_logging.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_cf.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_cookies.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_detection.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_driver_context.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_driver_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_file_call.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_form_turnstile.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_games.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_gui_click.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_hobbit.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_login_context.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_login_driver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_login_sb.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_main_call.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_mobile.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_multi_drivers.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_nopecha.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_order_tickets.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_parameter_script.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_performance_logs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_pyautogui.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_recaptcha.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_robot.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_sb.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_test_scripts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_turnstile.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/raw_uc_mode.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/sb_fixture_tests.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/shadow_root_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/swag_labs_user_tests.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_3d_apis.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_apple_site.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_assert_elements.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_calculator.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_canvas.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_cdp_ad_blocking.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_checkboxes.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_chinese_pdf.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_chromedriver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_coffee_cart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_console_logging.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_contains_selector.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_cycle_elements.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_decryption.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_deferred_asserts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_demo_site.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_detect_404s.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_docs_site.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_double_click.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_download_files.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_download_images.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_drag_and_drop.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_error_page.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_event_firing.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_fail.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_geolocation.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_get_coffee.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_get_locale_code.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_get_pdf_text.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_get_user_agent.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_hack_search.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_highlight_elements.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_image_saving.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_inspect_html.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_login.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_markers.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_mfa_login.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_multiple_drivers.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_null.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_override_driver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_override_sb_fixture.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_parse_soup.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_pdf_asserts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_pytest_parametrize.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_repeat_tests.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_request_sb_fixture.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_save_screenshots.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_sb_fixture.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_scrape_bing.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_select_options.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_shadow_dom.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_show_file_choosers.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_simple_login.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_skype_site.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_suite.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_swag_labs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_tinymce.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_todomvc.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_url_asserts.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_usefixtures.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_verify_chromedriver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_window_switching.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_xfail.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/test_xkcd.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/time_limit_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/bootstrap_google_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/driverjs_maps_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/google_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/hopscotch_google_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/introjs_google_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/maps_introjs_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/octocat_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/recordings/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/recordings/shepherd_google_tour_rec.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/shepherd_google_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/tour_examples/xkcd_tour.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/chinese_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/dutch_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/english_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/french_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/italian_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/japanese_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/korean_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/portuguese_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/russian_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/translations/spanish_test_1.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/uc_cdp_events.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/unit_tests/verify_framework.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/upgrade_chromedriver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/upload_file_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/user_agent_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/verify_undetected.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/visual_testing/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/visual_testing/layout_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/visual_testing/python_home_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/visual_testing/test_layout_fail.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/visual_testing/xkcd_visual_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/wordle_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/xpath_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/youtube_search_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/install.sh +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/environment.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/steps/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/steps/calculator.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/steps/fail_page.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/steps/real_world.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/behave/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/brython/index.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/node_js/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/node_js/my_first_test.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/integrations/node_js/test_demo_site.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/mkdocs_build/prepare.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/pyproject.toml +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/pytest.ini +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/sbase/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/sbase/__main__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/sbase/steps.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/base_case.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/config.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/setup.cfg +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/site/prepare.py +0 -0
- {seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.32.
|
3
|
+
Version: 4.32.6
|
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
|
@@ -97,7 +97,7 @@ Requires-Dist: trio==0.27.0
|
|
97
97
|
Requires-Dist: trio-websocket==0.11.1
|
98
98
|
Requires-Dist: wsproto==1.2.0
|
99
99
|
Requires-Dist: websocket-client==1.8.0
|
100
|
-
Requires-Dist: selenium==4.
|
100
|
+
Requires-Dist: selenium==4.26.1
|
101
101
|
Requires-Dist: cssselect==1.2.0
|
102
102
|
Requires-Dist: sortedcontainers==2.4.0
|
103
103
|
Requires-Dist: execnet==2.1.1
|
@@ -126,7 +126,8 @@ Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
|
126
126
|
Provides-Extra: coverage
|
127
127
|
Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
|
128
128
|
Requires-Dist: coverage>=7.6.4; python_version >= "3.9" and extra == "coverage"
|
129
|
-
Requires-Dist: pytest-cov>=5.0.0; extra == "coverage"
|
129
|
+
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
130
|
+
Requires-Dist: pytest-cov>=6.0.0; python_version >= "3.9" and extra == "coverage"
|
130
131
|
Provides-Extra: flake8
|
131
132
|
Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
|
132
133
|
Requires-Dist: flake8==7.1.1; python_version >= "3.9" and extra == "flake8"
|
@@ -2,6 +2,7 @@ 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/", 10)
|
5
|
+
sb.remove_elements("div.banner") # Remove the banner
|
5
6
|
sb.remove_elements("jdiv") # Remove chat widgets
|
6
7
|
no_automation_detected = "No automation framework detected"
|
7
8
|
sb.assert_text(no_automation_detected, "pxlscn-bot-detection")
|
@@ -36,7 +36,7 @@ trio==0.27.0
|
|
36
36
|
trio-websocket==0.11.1
|
37
37
|
wsproto==1.2.0
|
38
38
|
websocket-client==1.8.0
|
39
|
-
selenium==4.
|
39
|
+
selenium==4.26.1
|
40
40
|
cssselect==1.2.0
|
41
41
|
sortedcontainers==2.4.0
|
42
42
|
execnet==2.1.1
|
@@ -64,7 +64,8 @@ rich==13.9.3
|
|
64
64
|
|
65
65
|
coverage>=7.6.1;python_version<"3.9"
|
66
66
|
coverage>=7.6.4;python_version>="3.9"
|
67
|
-
pytest-cov>=5.0.0
|
67
|
+
pytest-cov>=5.0.0;python_version<"3.9"
|
68
|
+
pytest-cov>=6.0.0;python_version>="3.9"
|
68
69
|
flake8==5.0.4;python_version<"3.9"
|
69
70
|
flake8==7.1.1;python_version>="3.9"
|
70
71
|
mccabe==0.7.0
|
@@ -588,6 +588,7 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
588
588
|
cdp.find_elements_by_text = CDPM.find_elements_by_text
|
589
589
|
cdp.select = CDPM.select
|
590
590
|
cdp.select_all = CDPM.select_all
|
591
|
+
cdp.find_elements = CDPM.find_elements
|
591
592
|
cdp.click_link = CDPM.click_link
|
592
593
|
cdp.tile_windows = CDPM.tile_windows
|
593
594
|
cdp.get_all_cookies = CDPM.get_all_cookies
|
@@ -619,6 +620,8 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
619
620
|
cdp.reset_window_size = CDPM.reset_window_size
|
620
621
|
cdp.set_locale = CDPM.set_locale
|
621
622
|
cdp.set_attributes = CDPM.set_attributes
|
623
|
+
cdp.gui_click_x_y = CDPM.gui_click_x_y
|
624
|
+
cdp.gui_click_element = CDPM.gui_click_element
|
622
625
|
cdp.internalize_links = CDPM.internalize_links
|
623
626
|
cdp.get_window = CDPM.get_window
|
624
627
|
cdp.get_element_attributes = CDPM.get_element_attributes
|
@@ -655,6 +658,8 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
655
658
|
cdp.assert_element_visible = CDPM.assert_element
|
656
659
|
cdp.assert_text = CDPM.assert_text
|
657
660
|
cdp.assert_exact_text = CDPM.assert_exact_text
|
661
|
+
cdp.scroll_down = CDPM.scroll_down
|
662
|
+
cdp.scroll_up = CDPM.scroll_up
|
658
663
|
cdp.save_screenshot = CDPM.save_screenshot
|
659
664
|
cdp.page = page # async world
|
660
665
|
cdp.driver = driver.cdp_base # async world
|
@@ -2218,7 +2223,6 @@ def _set_chrome_options(
|
|
2218
2223
|
)
|
2219
2224
|
):
|
2220
2225
|
chrome_options.add_argument("--no-pings")
|
2221
|
-
chrome_options.add_argument("--disable-popup-blocking")
|
2222
2226
|
chrome_options.add_argument("--homepage=chrome://version/")
|
2223
2227
|
chrome_options.add_argument("--animation-duration-scale=0")
|
2224
2228
|
chrome_options.add_argument("--wm-window-animations-disabled")
|
@@ -1,7 +1,9 @@
|
|
1
1
|
"""Add CDP methods to extend the driver"""
|
2
|
+
import fasteners
|
2
3
|
import math
|
3
4
|
import os
|
4
5
|
import re
|
6
|
+
import sys
|
5
7
|
import time
|
6
8
|
from contextlib import suppress
|
7
9
|
from seleniumbase import config as sb_config
|
@@ -239,6 +241,9 @@ class CDPMethods():
|
|
239
241
|
self.__slow_mode_pause_if_set()
|
240
242
|
return updated_elements
|
241
243
|
|
244
|
+
def find_elements(self, selector, timeout=settings.SMALL_TIMEOUT):
|
245
|
+
return self.select_all(selector, timeout=timeout)
|
246
|
+
|
242
247
|
def click_link(self, link_text):
|
243
248
|
self.find_elements_by_text(link_text, "a")[0].click()
|
244
249
|
|
@@ -835,6 +840,194 @@ class CDPMethods():
|
|
835
840
|
with suppress(Exception):
|
836
841
|
self.loop.run_until_complete(self.page.evaluate(js_code))
|
837
842
|
|
843
|
+
def __verify_pyautogui_has_a_headed_browser(self):
|
844
|
+
"""PyAutoGUI requires a headed browser so that it can
|
845
|
+
focus on the correct element when performing actions."""
|
846
|
+
driver = self.driver
|
847
|
+
if hasattr(driver, "cdp_base"):
|
848
|
+
driver = driver.cdp_base
|
849
|
+
if driver.config.headless:
|
850
|
+
raise Exception(
|
851
|
+
"PyAutoGUI can't be used in headless mode!"
|
852
|
+
)
|
853
|
+
|
854
|
+
def __install_pyautogui_if_missing(self):
|
855
|
+
self.__verify_pyautogui_has_a_headed_browser()
|
856
|
+
driver = self.driver
|
857
|
+
if hasattr(driver, "cdp_base"):
|
858
|
+
driver = driver.cdp_base
|
859
|
+
pip_find_lock = fasteners.InterProcessLock(
|
860
|
+
constants.PipInstall.FINDLOCK
|
861
|
+
)
|
862
|
+
with pip_find_lock: # Prevent issues with multiple processes
|
863
|
+
try:
|
864
|
+
import pyautogui
|
865
|
+
with suppress(Exception):
|
866
|
+
use_pyautogui_ver = constants.PyAutoGUI.VER
|
867
|
+
if pyautogui.__version__ != use_pyautogui_ver:
|
868
|
+
del pyautogui
|
869
|
+
shared_utils.pip_install(
|
870
|
+
"pyautogui", version=use_pyautogui_ver
|
871
|
+
)
|
872
|
+
import pyautogui
|
873
|
+
except Exception:
|
874
|
+
print("\nPyAutoGUI required! Installing now...")
|
875
|
+
shared_utils.pip_install(
|
876
|
+
"pyautogui", version=constants.PyAutoGUI.VER
|
877
|
+
)
|
878
|
+
try:
|
879
|
+
import pyautogui
|
880
|
+
except Exception:
|
881
|
+
if (
|
882
|
+
shared_utils.is_linux()
|
883
|
+
and (not sb_config.headed or sb_config.xvfb)
|
884
|
+
and not driver.config.headless
|
885
|
+
):
|
886
|
+
from sbvirtualdisplay import Display
|
887
|
+
xvfb_width = 1366
|
888
|
+
xvfb_height = 768
|
889
|
+
if (
|
890
|
+
hasattr(sb_config, "_xvfb_width")
|
891
|
+
and sb_config._xvfb_width
|
892
|
+
and isinstance(sb_config._xvfb_width, int)
|
893
|
+
and hasattr(sb_config, "_xvfb_height")
|
894
|
+
and sb_config._xvfb_height
|
895
|
+
and isinstance(sb_config._xvfb_height, int)
|
896
|
+
):
|
897
|
+
xvfb_width = sb_config._xvfb_width
|
898
|
+
xvfb_height = sb_config._xvfb_height
|
899
|
+
if xvfb_width < 1024:
|
900
|
+
xvfb_width = 1024
|
901
|
+
sb_config._xvfb_width = xvfb_width
|
902
|
+
if xvfb_height < 768:
|
903
|
+
xvfb_height = 768
|
904
|
+
sb_config._xvfb_height = xvfb_height
|
905
|
+
with suppress(Exception):
|
906
|
+
xvfb_display = Display(
|
907
|
+
visible=True,
|
908
|
+
size=(xvfb_width, xvfb_height),
|
909
|
+
backend="xvfb",
|
910
|
+
use_xauth=True,
|
911
|
+
)
|
912
|
+
xvfb_display.start()
|
913
|
+
|
914
|
+
def __get_configured_pyautogui(self, pyautogui_copy):
|
915
|
+
if (
|
916
|
+
shared_utils.is_linux()
|
917
|
+
and hasattr(pyautogui_copy, "_pyautogui_x11")
|
918
|
+
and "DISPLAY" in os.environ.keys()
|
919
|
+
):
|
920
|
+
if (
|
921
|
+
hasattr(sb_config, "_pyautogui_x11_display")
|
922
|
+
and sb_config._pyautogui_x11_display
|
923
|
+
and hasattr(pyautogui_copy._pyautogui_x11, "_display")
|
924
|
+
and (
|
925
|
+
sb_config._pyautogui_x11_display
|
926
|
+
== pyautogui_copy._pyautogui_x11._display
|
927
|
+
)
|
928
|
+
):
|
929
|
+
pass
|
930
|
+
else:
|
931
|
+
import Xlib.display
|
932
|
+
pyautogui_copy._pyautogui_x11._display = (
|
933
|
+
Xlib.display.Display(os.environ['DISPLAY'])
|
934
|
+
)
|
935
|
+
sb_config._pyautogui_x11_display = (
|
936
|
+
pyautogui_copy._pyautogui_x11._display
|
937
|
+
)
|
938
|
+
return pyautogui_copy
|
939
|
+
|
940
|
+
def __gui_click_x_y(self, x, y, timeframe=0.25, uc_lock=False):
|
941
|
+
self.__install_pyautogui_if_missing()
|
942
|
+
import pyautogui
|
943
|
+
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
944
|
+
screen_width, screen_height = pyautogui.size()
|
945
|
+
if x < 0 or y < 0 or x > screen_width or y > screen_height:
|
946
|
+
raise Exception(
|
947
|
+
"PyAutoGUI cannot click on point (%s, %s)"
|
948
|
+
" outside screen. (Width: %s, Height: %s)"
|
949
|
+
% (x, y, screen_width, screen_height)
|
950
|
+
)
|
951
|
+
if uc_lock:
|
952
|
+
gui_lock = fasteners.InterProcessLock(
|
953
|
+
constants.MultiBrowser.PYAUTOGUILOCK
|
954
|
+
)
|
955
|
+
with gui_lock: # Prevent issues with multiple processes
|
956
|
+
pyautogui.moveTo(x, y, timeframe, pyautogui.easeOutQuad)
|
957
|
+
if timeframe >= 0.25:
|
958
|
+
time.sleep(0.056) # Wait if moving at human-speed
|
959
|
+
if "--debug" in sys.argv:
|
960
|
+
print(" <DEBUG> pyautogui.click(%s, %s)" % (x, y))
|
961
|
+
pyautogui.click(x=x, y=y)
|
962
|
+
else:
|
963
|
+
# Called from a method where the gui_lock is already active
|
964
|
+
pyautogui.moveTo(x, y, timeframe, pyautogui.easeOutQuad)
|
965
|
+
if timeframe >= 0.25:
|
966
|
+
time.sleep(0.056) # Wait if moving at human-speed
|
967
|
+
if "--debug" in sys.argv:
|
968
|
+
print(" <DEBUG> pyautogui.click(%s, %s)" % (x, y))
|
969
|
+
pyautogui.click(x=x, y=y)
|
970
|
+
|
971
|
+
def gui_click_x_y(self, x, y, timeframe=0.25):
|
972
|
+
gui_lock = fasteners.InterProcessLock(
|
973
|
+
constants.MultiBrowser.PYAUTOGUILOCK
|
974
|
+
)
|
975
|
+
with gui_lock: # Prevent issues with multiple processes
|
976
|
+
self.__install_pyautogui_if_missing()
|
977
|
+
import pyautogui
|
978
|
+
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
979
|
+
width_ratio = 1.0
|
980
|
+
if (
|
981
|
+
shared_utils.is_windows()
|
982
|
+
and (
|
983
|
+
not hasattr(sb_config, "_saved_width_ratio")
|
984
|
+
or not sb_config._saved_width_ratio
|
985
|
+
)
|
986
|
+
):
|
987
|
+
window_rect = self.get_window_rect()
|
988
|
+
width = window_rect["width"]
|
989
|
+
height = window_rect["height"]
|
990
|
+
win_x = window_rect["x"]
|
991
|
+
win_y = window_rect["y"]
|
992
|
+
if (
|
993
|
+
hasattr(sb_config, "_saved_width_ratio")
|
994
|
+
and sb_config._saved_width_ratio
|
995
|
+
):
|
996
|
+
width_ratio = sb_config._saved_width_ratio
|
997
|
+
else:
|
998
|
+
scr_width = pyautogui.size().width
|
999
|
+
self.maximize()
|
1000
|
+
win_width = self.get_window_size()["width"]
|
1001
|
+
width_ratio = round(float(scr_width) / float(win_width), 2)
|
1002
|
+
width_ratio += 0.01
|
1003
|
+
if width_ratio < 0.45 or width_ratio > 2.55:
|
1004
|
+
width_ratio = 1.01
|
1005
|
+
sb_config._saved_width_ratio = width_ratio
|
1006
|
+
self.set_window_rect(win_x, win_y, width, height)
|
1007
|
+
self.bring_active_window_to_front()
|
1008
|
+
elif (
|
1009
|
+
shared_utils.is_windows()
|
1010
|
+
and hasattr(sb_config, "_saved_width_ratio")
|
1011
|
+
and sb_config._saved_width_ratio
|
1012
|
+
):
|
1013
|
+
width_ratio = sb_config._saved_width_ratio
|
1014
|
+
self.bring_active_window_to_front()
|
1015
|
+
if shared_utils.is_windows():
|
1016
|
+
x = x * width_ratio
|
1017
|
+
y = y * width_ratio
|
1018
|
+
self.__gui_click_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
1019
|
+
return
|
1020
|
+
self.bring_active_window_to_front()
|
1021
|
+
self.__gui_click_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
1022
|
+
|
1023
|
+
def gui_click_element(self, selector, timeframe=0.25):
|
1024
|
+
self.__slow_mode_pause_if_set()
|
1025
|
+
x, y = self.get_gui_element_center(selector)
|
1026
|
+
self.__add_light_pause()
|
1027
|
+
self.gui_click_x_y(x, y, timeframe=timeframe)
|
1028
|
+
self.__slow_mode_pause_if_set()
|
1029
|
+
self.loop.run_until_complete(self.page.wait())
|
1030
|
+
|
838
1031
|
def internalize_links(self):
|
839
1032
|
"""All `target="_blank"` links become `target="_self"`.
|
840
1033
|
This prevents those links from opening in a new tab."""
|
@@ -938,6 +1131,16 @@ class CDPMethods():
|
|
938
1131
|
% (text, element.text_all, selector)
|
939
1132
|
)
|
940
1133
|
|
1134
|
+
def scroll_down(self, amount=25):
|
1135
|
+
self.loop.run_until_complete(
|
1136
|
+
self.page.scroll_down(amount)
|
1137
|
+
)
|
1138
|
+
|
1139
|
+
def scroll_up(self, amount=25):
|
1140
|
+
self.loop.run_until_complete(
|
1141
|
+
self.page.scroll_up(amount)
|
1142
|
+
)
|
1143
|
+
|
941
1144
|
def save_screenshot(self, name, folder=None, selector=None):
|
942
1145
|
filename = name
|
943
1146
|
if folder:
|
@@ -497,8 +497,9 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
497
497
|
pass
|
498
498
|
if hasattr(self, "service") and getattr(self.service, "process", None):
|
499
499
|
logger.debug("Stopping webdriver service")
|
500
|
-
|
501
|
-
|
500
|
+
with suppress(Exception):
|
501
|
+
self.stop_client()
|
502
|
+
self.service.stop()
|
502
503
|
with suppress(Exception):
|
503
504
|
if self.reactor and isinstance(self.reactor, Reactor):
|
504
505
|
logger.debug("Shutting down Reactor")
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/seleniumbase/undetected/cdp_driver/cdp_util.py
RENAMED
@@ -1,10 +1,16 @@
|
|
1
1
|
"""CDP-Driver is based on NoDriver"""
|
2
2
|
from __future__ import annotations
|
3
3
|
import asyncio
|
4
|
+
import fasteners
|
4
5
|
import logging
|
6
|
+
import os
|
5
7
|
import time
|
6
8
|
import types
|
7
9
|
import typing
|
10
|
+
from contextlib import suppress
|
11
|
+
from seleniumbase import config as sb_config
|
12
|
+
from seleniumbase.config import settings
|
13
|
+
from seleniumbase.fixtures import constants
|
8
14
|
from seleniumbase.fixtures import shared_utils
|
9
15
|
from typing import Optional, List, Union, Callable
|
10
16
|
from .element import Element
|
@@ -15,9 +21,120 @@ from .tab import Tab
|
|
15
21
|
import mycdp as cdp
|
16
22
|
|
17
23
|
logger = logging.getLogger(__name__)
|
24
|
+
IS_LINUX = shared_utils.is_linux()
|
18
25
|
T = typing.TypeVar("T")
|
19
26
|
|
20
27
|
|
28
|
+
def __activate_standard_virtual_display():
|
29
|
+
from sbvirtualdisplay import Display
|
30
|
+
width = settings.HEADLESS_START_WIDTH
|
31
|
+
height = settings.HEADLESS_START_HEIGHT
|
32
|
+
with suppress(Exception):
|
33
|
+
_xvfb_display = Display(
|
34
|
+
visible=0, size=(width, height)
|
35
|
+
)
|
36
|
+
_xvfb_display.start()
|
37
|
+
sb_config._virtual_display = _xvfb_display
|
38
|
+
sb_config.headless_active = True
|
39
|
+
|
40
|
+
|
41
|
+
def __activate_virtual_display_as_needed(
|
42
|
+
headless, headed, xvfb, xvfb_metrics
|
43
|
+
):
|
44
|
+
"""This is only needed on Linux."""
|
45
|
+
if IS_LINUX and (not headed or xvfb):
|
46
|
+
from sbvirtualdisplay import Display
|
47
|
+
pip_find_lock = fasteners.InterProcessLock(
|
48
|
+
constants.PipInstall.FINDLOCK
|
49
|
+
)
|
50
|
+
with pip_find_lock: # Prevent issues with multiple processes
|
51
|
+
if not headless:
|
52
|
+
import Xlib.display
|
53
|
+
try:
|
54
|
+
_xvfb_width = None
|
55
|
+
_xvfb_height = None
|
56
|
+
if xvfb_metrics:
|
57
|
+
with suppress(Exception):
|
58
|
+
metrics_string = xvfb_metrics
|
59
|
+
metrics_string = metrics_string.replace(" ", "")
|
60
|
+
metrics_list = metrics_string.split(",")[0:2]
|
61
|
+
_xvfb_width = int(metrics_list[0])
|
62
|
+
_xvfb_height = int(metrics_list[1])
|
63
|
+
# The minimum width,height is: 1024,768
|
64
|
+
if _xvfb_width < 1024:
|
65
|
+
_xvfb_width = 1024
|
66
|
+
sb_config._xvfb_width = _xvfb_width
|
67
|
+
if _xvfb_height < 768:
|
68
|
+
_xvfb_height = 768
|
69
|
+
sb_config._xvfb_height = _xvfb_height
|
70
|
+
xvfb = True
|
71
|
+
if not _xvfb_width:
|
72
|
+
_xvfb_width = 1366
|
73
|
+
if not _xvfb_height:
|
74
|
+
_xvfb_height = 768
|
75
|
+
_xvfb_display = Display(
|
76
|
+
visible=True,
|
77
|
+
size=(_xvfb_width, _xvfb_height),
|
78
|
+
backend="xvfb",
|
79
|
+
use_xauth=True,
|
80
|
+
)
|
81
|
+
_xvfb_display.start()
|
82
|
+
if "DISPLAY" not in os.environ.keys():
|
83
|
+
print(
|
84
|
+
"\nX11 display failed! Will use regular xvfb!"
|
85
|
+
)
|
86
|
+
__activate_standard_virtual_display()
|
87
|
+
except Exception as e:
|
88
|
+
if hasattr(e, "msg"):
|
89
|
+
print("\n" + str(e.msg))
|
90
|
+
else:
|
91
|
+
print(e)
|
92
|
+
print("\nX11 display failed! Will use regular xvfb!")
|
93
|
+
__activate_standard_virtual_display()
|
94
|
+
return
|
95
|
+
pyautogui_is_installed = False
|
96
|
+
try:
|
97
|
+
import pyautogui
|
98
|
+
with suppress(Exception):
|
99
|
+
use_pyautogui_ver = constants.PyAutoGUI.VER
|
100
|
+
if pyautogui.__version__ != use_pyautogui_ver:
|
101
|
+
del pyautogui # To get newer ver
|
102
|
+
shared_utils.pip_install(
|
103
|
+
"pyautogui", version=use_pyautogui_ver
|
104
|
+
)
|
105
|
+
import pyautogui
|
106
|
+
pyautogui_is_installed = True
|
107
|
+
except Exception:
|
108
|
+
message = (
|
109
|
+
"PyAutoGUI is required for UC Mode on Linux! "
|
110
|
+
"Installing now..."
|
111
|
+
)
|
112
|
+
print("\n" + message)
|
113
|
+
shared_utils.pip_install(
|
114
|
+
"pyautogui", version=constants.PyAutoGUI.VER
|
115
|
+
)
|
116
|
+
import pyautogui
|
117
|
+
pyautogui_is_installed = True
|
118
|
+
if (
|
119
|
+
pyautogui_is_installed
|
120
|
+
and hasattr(pyautogui, "_pyautogui_x11")
|
121
|
+
):
|
122
|
+
try:
|
123
|
+
pyautogui._pyautogui_x11._display = (
|
124
|
+
Xlib.display.Display(os.environ['DISPLAY'])
|
125
|
+
)
|
126
|
+
sb_config._pyautogui_x11_display = (
|
127
|
+
pyautogui._pyautogui_x11._display
|
128
|
+
)
|
129
|
+
except Exception as e:
|
130
|
+
if hasattr(e, "msg"):
|
131
|
+
print("\n" + str(e.msg))
|
132
|
+
else:
|
133
|
+
print(e)
|
134
|
+
else:
|
135
|
+
__activate_standard_virtual_display()
|
136
|
+
|
137
|
+
|
21
138
|
async def start(
|
22
139
|
config: Optional[Config] = None,
|
23
140
|
*,
|
@@ -27,11 +144,14 @@ async def start(
|
|
27
144
|
guest: Optional[bool] = False,
|
28
145
|
browser_executable_path: Optional[PathLike] = None,
|
29
146
|
browser_args: Optional[List[str]] = None,
|
147
|
+
xvfb_metrics: Optional[List[str]] = None, # "Width,Height" for Linux
|
30
148
|
sandbox: Optional[bool] = True,
|
31
149
|
lang: Optional[str] = None,
|
32
150
|
host: Optional[str] = None,
|
33
151
|
port: Optional[int] = None,
|
34
|
-
|
152
|
+
xvfb: Optional[int] = None, # Use a special virtual display on Linux
|
153
|
+
headed: Optional[bool] = None, # Override default Xvfb mode on Linux
|
154
|
+
expert: Optional[bool] = None, # Open up closed Shadow-root elements
|
35
155
|
**kwargs: Optional[dict],
|
36
156
|
) -> Browser:
|
37
157
|
"""
|
@@ -73,6 +193,9 @@ async def start(
|
|
73
193
|
(For example, ensuring shadow-root is always in "open" mode.)
|
74
194
|
:type expert: bool
|
75
195
|
"""
|
196
|
+
if IS_LINUX and not headless and not headed and not xvfb:
|
197
|
+
xvfb = True # The default setting on Linux
|
198
|
+
__activate_virtual_display_as_needed(headless, headed, xvfb, xvfb_metrics)
|
76
199
|
if not config:
|
77
200
|
config = Config(
|
78
201
|
user_data_dir,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.32.
|
3
|
+
Version: 4.32.6
|
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
|
@@ -97,7 +97,7 @@ Requires-Dist: trio==0.27.0
|
|
97
97
|
Requires-Dist: trio-websocket==0.11.1
|
98
98
|
Requires-Dist: wsproto==1.2.0
|
99
99
|
Requires-Dist: websocket-client==1.8.0
|
100
|
-
Requires-Dist: selenium==4.
|
100
|
+
Requires-Dist: selenium==4.26.1
|
101
101
|
Requires-Dist: cssselect==1.2.0
|
102
102
|
Requires-Dist: sortedcontainers==2.4.0
|
103
103
|
Requires-Dist: execnet==2.1.1
|
@@ -126,7 +126,8 @@ Requires-Dist: allure-behave>=2.13.5; extra == "allure"
|
|
126
126
|
Provides-Extra: coverage
|
127
127
|
Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
|
128
128
|
Requires-Dist: coverage>=7.6.4; python_version >= "3.9" and extra == "coverage"
|
129
|
-
Requires-Dist: pytest-cov>=5.0.0; extra == "coverage"
|
129
|
+
Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
|
130
|
+
Requires-Dist: pytest-cov>=6.0.0; python_version >= "3.9" and extra == "coverage"
|
130
131
|
Provides-Extra: flake8
|
131
132
|
Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
|
132
133
|
Requires-Dist: flake8==7.1.1; python_version >= "3.9" and extra == "flake8"
|
@@ -31,7 +31,7 @@ trio==0.27.0
|
|
31
31
|
trio-websocket==0.11.1
|
32
32
|
wsproto==1.2.0
|
33
33
|
websocket-client==1.8.0
|
34
|
-
selenium==4.
|
34
|
+
selenium==4.26.1
|
35
35
|
cssselect==1.2.0
|
36
36
|
sortedcontainers==2.4.0
|
37
37
|
execnet==2.1.1
|
@@ -73,13 +73,14 @@ allure-python-commons>=2.13.5
|
|
73
73
|
allure-behave>=2.13.5
|
74
74
|
|
75
75
|
[coverage]
|
76
|
-
pytest-cov>=5.0.0
|
77
76
|
|
78
77
|
[coverage:python_version < "3.9"]
|
79
78
|
coverage>=7.6.1
|
79
|
+
pytest-cov>=5.0.0
|
80
80
|
|
81
81
|
[coverage:python_version >= "3.9"]
|
82
82
|
coverage>=7.6.4
|
83
|
+
pytest-cov>=6.0.0
|
83
84
|
|
84
85
|
[flake8]
|
85
86
|
mccabe==0.7.0
|
@@ -185,7 +185,7 @@ setup(
|
|
185
185
|
'trio-websocket==0.11.1',
|
186
186
|
'wsproto==1.2.0',
|
187
187
|
'websocket-client==1.8.0',
|
188
|
-
'selenium==4.
|
188
|
+
'selenium==4.26.1',
|
189
189
|
'cssselect==1.2.0',
|
190
190
|
"sortedcontainers==2.4.0",
|
191
191
|
'execnet==2.1.1',
|
@@ -222,7 +222,8 @@ setup(
|
|
222
222
|
"coverage": [
|
223
223
|
'coverage>=7.6.1;python_version<"3.9"',
|
224
224
|
'coverage>=7.6.4;python_version>="3.9"',
|
225
|
-
'pytest-cov>=5.0.0',
|
225
|
+
'pytest-cov>=5.0.0;python_version<"3.9"',
|
226
|
+
'pytest-cov>=6.0.0;python_version>="3.9"',
|
226
227
|
],
|
227
228
|
# pip install -e .[flake8]
|
228
229
|
# Usage: flake8
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/__init__.py
RENAMED
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/calculator.py
RENAMED
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/fail_page.py
RENAMED
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/imported.py
RENAMED
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/behave_bdd/features/steps/swag_labs.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/file_parsing/__init__.py
RENAMED
File without changes
|
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/google_objects.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/swag_labs_test.py
RENAMED
File without changes
|
{seleniumbase-4.32.5a1 → seleniumbase-4.32.6}/examples/boilerplates/samples/test_page_objects.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|