seleniumbase 4.19.2__tar.gz → 4.20.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/PKG-INFO +2 -2
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/ReadMe.md +3 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs.yml +1 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/requirements.txt +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/requirements.txt +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/browser_launcher.py +85 -12
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/base_case.py +12 -17
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/constants.py +13 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/js_utils.py +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/driver_manager.py +0 -3
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/pytest_plugin.py +1 -5
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/sb_manager.py +9 -4
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/selenium_plugin.py +2 -11
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/__init__.py +6 -11
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/PKG-INFO +2 -2
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/requires.txt +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/setup.py +1 -1
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/Workflows.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/pages.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-mac.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-ubuntu.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-nightly-windows.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.github/workflows/python-package.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/.gitignore +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CHANGELOG.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CNAME +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CODE_OF_CONDUCT.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/CONTRIBUTING.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/Dockerfile +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/LICENSE +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/MANIFEST.in +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/README.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/SECURITY.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/_config.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/azure-pipelines.yml +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/basic_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/behave.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/behave.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/calculator.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/environment.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/fail_page.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/realworld.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/calculator.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/fail_page.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/imported.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/swag_labs.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/base_test_case.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/boilerplate_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/classic_obj_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/page_objects.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/google_objects.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/google_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/sb_swag_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/swag_labs_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/samples/test_page_objects.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/boilerplates/sb_fixture_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/mac_cap_file.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/sample_cap_file_BS.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/sample_cap_file_SL.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/selenoid_cap_file.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/capabilities/win10_cap_file.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/case_summary.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/chart_presentation.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/my_chart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/pie_charts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_area_chart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_display_chart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_line_chart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_multi_series.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/chart_maker/test_save_chart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/coffee_cart_tests.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/custom_settings.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/desktop_apps/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/desktop_apps/recorder.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/dialog_boxes/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/dialog_boxes/dialog_box_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/edge_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_config.cfg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/basic_test_info.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/page_source.html +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/example_logs/screenshot.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/github_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/gui_test_runner.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/hack_the_planet.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/handle_alert_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/iframe_tests.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/locale_code_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/basic_masterqa_test_0.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/masterqa_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/master_qa/pytest.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/example_spec.js +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/example_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/input_spec.js +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/input_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/mat_paginator_spec.js +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/protractor/mat_paginator_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/messy_raw.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/pytest.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/refined_raw.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/migration/raw_selenium/simple_sbase.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/my_first_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/nth_child_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/demo_page.html +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/load_html_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_demo_page.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_handle_alerts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_request_fixture.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/offline_examples/test_user_agent.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/old_wordle_script.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/parameterized_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/performance_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/core_presentation.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/edge_presentation.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/fundamentals.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/my_presentation.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/presenter/py_virtual_envs.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/proxy_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/pytest.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/rate_limiting_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_browser_launcher.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_call.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_driver_context.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_file_call.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_main_call.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_parameter_script.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_sb.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_test_scripts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/raw_uc_mode.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/setup.cfg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/shadow_root_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/swag_labs_user_tests.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_apple_site.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_assert_elements.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_calculator.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_canvas.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_checkboxes.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_chinese_pdf.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_chromedriver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_coffee_cart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_console_logging.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_contains_selector.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_cycle_elements.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_decryption.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_deferred_asserts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_demo_site.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_detect_404s.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_docs_site.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_double_click.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_download_files.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_download_images.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_drag_and_drop.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_error_page.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_event_firing.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_fail.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_geolocation.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_coffee.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_locale_code.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_pdf_text.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_get_user_agent.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_hack_search.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_image_saving.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_inspect_html.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_login.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_markers.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_mfa_login.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_multiple_drivers.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_null.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_override_driver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_override_sb_fixture.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_parse_soup.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_pdf_asserts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_pytest_parametrize.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_repeat_tests.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_request_sb_fixture.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_save_screenshots.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_sb_fixture.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_scrape_bing.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_select_options.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_shadow_dom.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_show_file_choosers.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_skype_site.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_suite.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_swag_labs.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_tinymce.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_todomvc.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_url_asserts.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_usefixtures.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_verify_chromedriver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_window_switching.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_xfail.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/test_xkcd.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/time_limit_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/bootstrap_google_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/driverjs_maps_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/google_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/hopscotch_google_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/introjs_google_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/maps_introjs_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/octocat_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/shepherd_google_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/tour_examples/xkcd_tour.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/chinese_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/dutch_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/english_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/french_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/italian_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/japanese_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/korean_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/portuguese_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/pytest.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/russian_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/translations/spanish_test_1.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/uc_cdp_events.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/unit_tests/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/unit_tests/verify_framework.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/upgrade_chromedriver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/upload_file_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/user_agent_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/verify_undetected.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/layout_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/python_home_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/test_layout_fail.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/visual_testing/xkcd_visual_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/wordle_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/xpath_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/youtube_search_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/behave_gui.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/case_plans.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/chinese.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/commander.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/customizing_test_runs.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/demo_mode.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/desired_capabilities.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/features_list.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/handling_iframes.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/happy_customers.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/hidden_files_info.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/how_it_works.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/html_inspector.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/install.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/install_python_pip_git.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/js_package_manager.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/locale_codes.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/method_summary.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/mobile_testing.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/mysql_installation.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/recorder_mode.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/shadow_dom.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/syntax_formats.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/thank_you.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/translations.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/useful_grep_commands.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/using_safari_driver.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/verify_webdriver.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/virtualenv_instructions.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/help_docs/webdriver_installation.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/install.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/azure/jenkins/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/behave.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/behave.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/calculator.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/environment.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/fail_page.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/realworld.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/calculator.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/fail_page.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/real_world.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/behave/features/swag_labs.feature +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/index.html +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/index.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/brython/library.html +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/docker-entrypoint.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/docker_config.cfg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/docker/run_docker_test_in_firefox.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/workflows/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/github/workflows/extras.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/google_cloud/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/katalon/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/Linuxfile.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/Xvfb_launcher.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/jenkins_permissions.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/linux/tomcat_permissions.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/index.html +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/my_first_test.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/npm-shrinkwrap.json +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/package.json +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/server.js +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/node_js/test_demo_site.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/integrations/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/ReadMe.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/docs_instructions.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie_2.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/dash_pie_3.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/favicon.ico +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/grad_logo.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_icon.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo2.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/green_logo3.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3a.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3b.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo3c.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo4.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo5.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo6.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/logo7.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_icon.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_logo_10.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/sb_logo_7.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/side_by_side.png +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_facebook.svg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_github.svg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_gitter.svg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_instagram.svg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/img/social/share_twitter.svg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/index.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/mkdocs_build/prepare.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/pytest.ini +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/ReadMe.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/__main__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/sbase/steps.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/drivers/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/resources/favicon.ico +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/setup.cfg +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/virtualenv_install.sh +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/win_install.bat +0 -0
- {seleniumbase-4.19.2 → seleniumbase-4.20.0}/win_virtualenv.bat +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.20.0
|
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
|
@@ -82,7 +82,7 @@ Requires-Dist: trio==0.22.2
|
|
82
82
|
Requires-Dist: trio-websocket==0.11.1
|
83
83
|
Requires-Dist: wsproto==1.2.0
|
84
84
|
Requires-Dist: selenium==4.11.2; python_version < "3.8"
|
85
|
-
Requires-Dist: selenium==4.
|
85
|
+
Requires-Dist: selenium==4.14.0; python_version >= "3.8"
|
86
86
|
Requires-Dist: cssselect==1.2.0
|
87
87
|
Requires-Dist: sortedcontainers==2.4.0
|
88
88
|
Requires-Dist: fasteners==0.19
|
@@ -81,11 +81,13 @@
|
|
81
81
|
|
82
82
|
<h3>Demo Pages / Web Examples</h3>
|
83
83
|
|
84
|
+
<div><a href="https://seleniumbase.io/coffee/"><b>Coffee Cart (Test Page)</b></a></div>
|
84
85
|
<div><a href="https://seleniumbase.io/demo_page"><b>Demo Page (Test Page)</b></a></div>
|
86
|
+
<div><a href="https://seleniumbase.io/simple/login"><b>Simple App (Test Page)</b></a></div>
|
85
87
|
<div><a href="https://seleniumbase.io/realworld/login"><b>MFA Login (Test Page)</b></a></div>
|
86
88
|
<div><a href="https://seleniumbase.io/tinymce/"><b>TinyMCE (Test Page)</b></a></div>
|
87
89
|
<div><a href="https://seleniumbase.io/error_page/"><b>Error Page (Test Page)</b></a></div>
|
88
|
-
<div><a href="https://seleniumbase.io/other/drag_and_drop"><b>Drag
|
90
|
+
<div><a href="https://seleniumbase.io/other/drag_and_drop"><b>Drag & Drop (Test Page)</b></a></div>
|
89
91
|
<div><a href="https://seleniumbase.io/devices/"><b>Device Farm (Virtual)</b></a></div>
|
90
92
|
<div><a href="https://seleniumbase.io/w3schools/"><b>HTML Playground Page</b></a></div>
|
91
93
|
<div><a href="https://seleniumbase.io/w3schools/sbase"><b>SeleniumBase in iframe</b></a></div>
|
@@ -133,6 +133,7 @@ nav:
|
|
133
133
|
- Demo Pages:
|
134
134
|
- 🍵 Coffee Cart (Test App): https://seleniumbase.io/coffee/
|
135
135
|
- 📑 Demo Page (Test Page): https://seleniumbase.io/demo_page
|
136
|
+
- 🔑 Simple App (Test Page): https://seleniumbase.io/simple/login
|
136
137
|
- 🔑 MFA Login (Test App): https://seleniumbase.io/realworld/login
|
137
138
|
- 📝 TinyMCE (Test Page): https://seleniumbase.io/tinymce/
|
138
139
|
- 🔢 Calculator (Test App): https://seleniumbase.io/apps/calculator
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.
|
2
|
+
__version__ = "4.20.0"
|
@@ -319,7 +319,15 @@ def has_cf(text):
|
|
319
319
|
return False
|
320
320
|
|
321
321
|
|
322
|
-
def uc_special_open_if_cf(
|
322
|
+
def uc_special_open_if_cf(
|
323
|
+
driver,
|
324
|
+
url,
|
325
|
+
proxy_string=None,
|
326
|
+
mobile_emulator=None,
|
327
|
+
device_width=None,
|
328
|
+
device_height=None,
|
329
|
+
device_pixel_ratio=None,
|
330
|
+
):
|
323
331
|
if (
|
324
332
|
url.startswith("http:") or url.startswith("https:")
|
325
333
|
):
|
@@ -345,6 +353,36 @@ def uc_special_open_if_cf(driver, url, proxy_string=None):
|
|
345
353
|
driver.close()
|
346
354
|
driver.switch_to.window(driver.window_handles[-1])
|
347
355
|
time.sleep(0.02)
|
356
|
+
if mobile_emulator:
|
357
|
+
uc_metrics = {}
|
358
|
+
if (
|
359
|
+
type(device_width) is int
|
360
|
+
and type(device_height) is int
|
361
|
+
and type(device_pixel_ratio) is int
|
362
|
+
):
|
363
|
+
uc_metrics["width"] = device_width
|
364
|
+
uc_metrics["height"] = device_height
|
365
|
+
uc_metrics["pixelRatio"] = device_pixel_ratio
|
366
|
+
else:
|
367
|
+
uc_metrics["width"] = constants.Mobile.WIDTH
|
368
|
+
uc_metrics["height"] = constants.Mobile.HEIGHT
|
369
|
+
uc_metrics["pixelRatio"] = constants.Mobile.RATIO
|
370
|
+
set_device_metrics_override = dict(
|
371
|
+
{
|
372
|
+
"width": uc_metrics["width"],
|
373
|
+
"height": uc_metrics["height"],
|
374
|
+
"deviceScaleFactor": uc_metrics["pixelRatio"],
|
375
|
+
"mobile": True
|
376
|
+
}
|
377
|
+
)
|
378
|
+
try:
|
379
|
+
driver.execute_cdp_cmd(
|
380
|
+
'Emulation.setDeviceMetricsOverride',
|
381
|
+
set_device_metrics_override
|
382
|
+
)
|
383
|
+
except Exception:
|
384
|
+
pass
|
385
|
+
time.sleep(0.03)
|
348
386
|
else:
|
349
387
|
driver.default_get(url) # The original one
|
350
388
|
else:
|
@@ -739,7 +777,7 @@ def _set_chrome_options(
|
|
739
777
|
"excludeSwitches",
|
740
778
|
["enable-automation", "enable-logging", "enable-blink-features"],
|
741
779
|
)
|
742
|
-
if mobile_emulator:
|
780
|
+
if mobile_emulator and not is_using_uc(undetectable, browser_name):
|
743
781
|
emulator_settings = {}
|
744
782
|
device_metrics = {}
|
745
783
|
if (
|
@@ -751,9 +789,9 @@ def _set_chrome_options(
|
|
751
789
|
device_metrics["height"] = device_height
|
752
790
|
device_metrics["pixelRatio"] = device_pixel_ratio
|
753
791
|
else:
|
754
|
-
device_metrics["width"] =
|
755
|
-
device_metrics["height"] =
|
756
|
-
device_metrics["pixelRatio"] =
|
792
|
+
device_metrics["width"] = constants.Mobile.WIDTH
|
793
|
+
device_metrics["height"] = constants.Mobile.HEIGHT
|
794
|
+
device_metrics["pixelRatio"] = constants.Mobile.RATIO
|
757
795
|
emulator_settings["deviceMetrics"] = device_metrics
|
758
796
|
if user_agent:
|
759
797
|
emulator_settings["userAgent"] = user_agent
|
@@ -1279,8 +1317,8 @@ def get_driver(
|
|
1279
1317
|
if (uc_cdp_events or uc_subprocess) and not undetectable:
|
1280
1318
|
undetectable = True
|
1281
1319
|
if is_using_uc(undetectable, browser_name) and mobile_emulator:
|
1282
|
-
|
1283
|
-
|
1320
|
+
if not user_agent:
|
1321
|
+
user_agent = constants.Mobile.AGENT
|
1284
1322
|
if page_load_strategy and page_load_strategy.lower() == "none":
|
1285
1323
|
settings.PAGE_LOAD_STRATEGY = "none"
|
1286
1324
|
proxy_auth = False
|
@@ -2359,7 +2397,7 @@ def get_local_driver(
|
|
2359
2397
|
elif headless:
|
2360
2398
|
if "--headless" not in edge_options.arguments:
|
2361
2399
|
edge_options.add_argument("--headless")
|
2362
|
-
if mobile_emulator:
|
2400
|
+
if mobile_emulator and not is_using_uc(undetectable, browser_name):
|
2363
2401
|
emulator_settings = {}
|
2364
2402
|
device_metrics = {}
|
2365
2403
|
if (
|
@@ -2371,9 +2409,9 @@ def get_local_driver(
|
|
2371
2409
|
device_metrics["height"] = device_height
|
2372
2410
|
device_metrics["pixelRatio"] = device_pixel_ratio
|
2373
2411
|
else:
|
2374
|
-
device_metrics["width"] =
|
2375
|
-
device_metrics["height"] =
|
2376
|
-
device_metrics["pixelRatio"] =
|
2412
|
+
device_metrics["width"] = constants.Mobile.WIDTH
|
2413
|
+
device_metrics["height"] = constants.Mobile.HEIGHT
|
2414
|
+
device_metrics["pixelRatio"] = constants.Mobile.RATIO
|
2377
2415
|
emulator_settings["deviceMetrics"] = device_metrics
|
2378
2416
|
if user_agent:
|
2379
2417
|
emulator_settings["userAgent"] = user_agent
|
@@ -3416,7 +3454,13 @@ def get_local_driver(
|
|
3416
3454
|
driver.default_get = driver.get # Save copy of original
|
3417
3455
|
if uc_activated:
|
3418
3456
|
driver.get = lambda url: uc_special_open_if_cf(
|
3419
|
-
driver,
|
3457
|
+
driver,
|
3458
|
+
url,
|
3459
|
+
proxy_string,
|
3460
|
+
mobile_emulator,
|
3461
|
+
device_width,
|
3462
|
+
device_height,
|
3463
|
+
device_pixel_ratio,
|
3420
3464
|
)
|
3421
3465
|
driver.uc_open = lambda url: uc_open(driver, url)
|
3422
3466
|
driver.uc_open_with_tab = (
|
@@ -3425,6 +3469,35 @@ def get_local_driver(
|
|
3425
3469
|
driver.uc_open_with_reconnect = (
|
3426
3470
|
lambda url: uc_open_with_reconnect(driver, url)
|
3427
3471
|
)
|
3472
|
+
if mobile_emulator:
|
3473
|
+
uc_metrics = {}
|
3474
|
+
if (
|
3475
|
+
type(device_width) is int
|
3476
|
+
and type(device_height) is int
|
3477
|
+
and type(device_pixel_ratio) is int
|
3478
|
+
):
|
3479
|
+
uc_metrics["width"] = device_width
|
3480
|
+
uc_metrics["height"] = device_height
|
3481
|
+
uc_metrics["pixelRatio"] = device_pixel_ratio
|
3482
|
+
else:
|
3483
|
+
uc_metrics["width"] = constants.Mobile.WIDTH
|
3484
|
+
uc_metrics["height"] = constants.Mobile.HEIGHT
|
3485
|
+
uc_metrics["pixelRatio"] = constants.Mobile.RATIO
|
3486
|
+
set_device_metrics_override = dict(
|
3487
|
+
{
|
3488
|
+
"width": uc_metrics["width"],
|
3489
|
+
"height": uc_metrics["height"],
|
3490
|
+
"deviceScaleFactor": uc_metrics["pixelRatio"],
|
3491
|
+
"mobile": True
|
3492
|
+
}
|
3493
|
+
)
|
3494
|
+
try:
|
3495
|
+
driver.execute_cdp_cmd(
|
3496
|
+
'Emulation.setDeviceMetricsOverride',
|
3497
|
+
set_device_metrics_override
|
3498
|
+
)
|
3499
|
+
except Exception:
|
3500
|
+
pass
|
3428
3501
|
return extend_driver(driver)
|
3429
3502
|
else: # Running headless on Linux (and not using --uc)
|
3430
3503
|
try:
|
@@ -3887,12 +3887,8 @@ class BaseCase(unittest.TestCase):
|
|
3887
3887
|
if d_p_r is None:
|
3888
3888
|
d_p_r = self.__device_pixel_ratio
|
3889
3889
|
if is_mobile and not user_agent:
|
3890
|
-
# Use
|
3891
|
-
user_agent =
|
3892
|
-
"Mozilla/5.0 (Linux; Android 11; Pixel 4 XL) "
|
3893
|
-
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
3894
|
-
"Chrome/89.0.4389.105 Mobile Safari/537.36"
|
3895
|
-
)
|
3890
|
+
# Use a Pixel user agent by default if not specified
|
3891
|
+
user_agent = constants.Mobile.AGENT
|
3896
3892
|
valid_browsers = constants.ValidBrowsers.valid_browsers
|
3897
3893
|
if browser_name not in valid_browsers:
|
3898
3894
|
raise Exception(
|
@@ -14351,15 +14347,9 @@ class BaseCase(unittest.TestCase):
|
|
14351
14347
|
self.mobile_emulator = True
|
14352
14348
|
except Exception:
|
14353
14349
|
raise Exception(exception_string)
|
14354
|
-
if self.mobile_emulator:
|
14355
|
-
if not
|
14356
|
-
|
14357
|
-
self.user_agent = (
|
14358
|
-
"Mozilla/5.0 (Linux; Android 11; Pixel 4 XL) "
|
14359
|
-
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
14360
|
-
"Chrome/89.0.4389.105 Mobile Safari/537.36"
|
14361
|
-
)
|
14362
|
-
|
14350
|
+
if self.mobile_emulator and not self.user_agent:
|
14351
|
+
# Use a Pixel user agent by default if not specified
|
14352
|
+
self.user_agent = constants.Mobile.AGENT
|
14363
14353
|
if self.browser in ["firefox", "ie", "safari"]:
|
14364
14354
|
# The Recorder Mode browser extension is only for Chrome/Edge.
|
14365
14355
|
if self.recorder_mode:
|
@@ -15314,11 +15304,11 @@ class BaseCase(unittest.TestCase):
|
|
15314
15304
|
# Post Mortem Debug Mode ("python --pdb")
|
15315
15305
|
|
15316
15306
|
def __activate_debug_mode_in_teardown(self):
|
15317
|
-
"""Activate
|
15307
|
+
"""Activate Final Trace / Debug Mode"""
|
15318
15308
|
import pdb
|
15319
15309
|
|
15320
15310
|
pdb.set_trace()
|
15321
|
-
# Final
|
15311
|
+
# Final Trace ("--ftrace")
|
15322
15312
|
|
15323
15313
|
def has_exception(self):
|
15324
15314
|
"""(This method should ONLY be used in custom tearDown() methods.)
|
@@ -15813,6 +15803,11 @@ class BaseCase(unittest.TestCase):
|
|
15813
15803
|
and sb_config._do_sb_post_mortem
|
15814
15804
|
):
|
15815
15805
|
self.__activate_sb_mgr_post_mortem_debug_mode()
|
15806
|
+
elif (
|
15807
|
+
hasattr(sb_config, "_do_sb_final_trace")
|
15808
|
+
and sb_config._do_sb_final_trace
|
15809
|
+
):
|
15810
|
+
self.__activate_debug_mode_in_teardown()
|
15816
15811
|
# (Pynose / Behave / Pure Python) Close all open browser windows
|
15817
15812
|
self.__quit_all_drivers()
|
15818
15813
|
# Resume tearDown() for all test runners, (Pytest / Pynose / Behave)
|
@@ -346,6 +346,19 @@ class SeleniumWire:
|
|
346
346
|
VER = "5.1.0"
|
347
347
|
|
348
348
|
|
349
|
+
class Mobile:
|
350
|
+
# Default values for mobile settings
|
351
|
+
WIDTH = 390
|
352
|
+
HEIGHT = 715
|
353
|
+
RATIO = 3
|
354
|
+
AGENT = (
|
355
|
+
"Mozilla/5.0 (Linux; Android 13; Pixel 7 XL "
|
356
|
+
"Build/SP2A.220505.006.A1; wv) "
|
357
|
+
"AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 "
|
358
|
+
"Chrome/110.0.5028.105 Mobile Safari/537.36"
|
359
|
+
)
|
360
|
+
|
361
|
+
|
349
362
|
class ValidBrowsers:
|
350
363
|
valid_browsers = [
|
351
364
|
"chrome",
|
@@ -910,7 +910,7 @@ def post_messenger_success_message(driver, message, msg_dur=None):
|
|
910
910
|
theme = "future"
|
911
911
|
location = "bottom_right"
|
912
912
|
if hasattr(sb_config, "mobile_emulator") and sb_config.mobile_emulator:
|
913
|
-
location = "
|
913
|
+
location = "top_right"
|
914
914
|
set_messenger_theme(driver, theme=theme, location=location)
|
915
915
|
post_message(driver, message, msg_dur, style="success")
|
916
916
|
time.sleep(msg_dur + 0.07)
|
@@ -554,7 +554,7 @@ def pytest_addoption(parser):
|
|
554
554
|
help="""Designates the three device metrics of the mobile
|
555
555
|
emulator: CSS Width, CSS Height, and Pixel-Ratio.
|
556
556
|
Format: A comma-separated string with the 3 values.
|
557
|
-
|
557
|
+
Examples: "375,734,5" or "411,731,3" or "390,715,3"
|
558
558
|
Default: None. (Will use default values if None)""",
|
559
559
|
)
|
560
560
|
parser.addoption(
|
@@ -1399,10 +1399,6 @@ def pytest_addoption(parser):
|
|
1399
1399
|
"\n If you need both, override get_new_driver() from BaseCase:"
|
1400
1400
|
"\n https://seleniumbase.io/help_docs/syntax_formats/#sb_sf_09\n"
|
1401
1401
|
)
|
1402
|
-
if undetectable and "--mobile" in sys_argv:
|
1403
|
-
raise Exception(
|
1404
|
-
"\n SeleniumBase doesn't support mixing --uc with --mobile\n"
|
1405
|
-
)
|
1406
1402
|
|
1407
1403
|
|
1408
1404
|
def pytest_configure(config):
|
@@ -308,6 +308,8 @@ def SB(
|
|
308
308
|
is_mobile = True
|
309
309
|
else:
|
310
310
|
is_mobile = False
|
311
|
+
if is_mobile:
|
312
|
+
sb_config.mobile_emulator = True
|
311
313
|
proxy_string = proxy
|
312
314
|
user_agent = agent
|
313
315
|
recorder_mode = False
|
@@ -370,7 +372,6 @@ def SB(
|
|
370
372
|
sb_config.proxy_driver = True
|
371
373
|
if variables and type(variables) is str and len(variables) > 0:
|
372
374
|
import ast
|
373
|
-
|
374
375
|
bad_input = False
|
375
376
|
if (
|
376
377
|
not variables.startswith("{")
|
@@ -458,9 +459,6 @@ def SB(
|
|
458
459
|
uc_cdp_events = True
|
459
460
|
else:
|
460
461
|
uc_cdp_events = False
|
461
|
-
if undetectable and is_mobile:
|
462
|
-
is_mobile = False
|
463
|
-
user_agent = None
|
464
462
|
if use_auto_ext is None:
|
465
463
|
if "--use-auto-ext" in sys_argv:
|
466
464
|
use_auto_ext = True
|
@@ -875,6 +873,13 @@ def SB(
|
|
875
873
|
finally:
|
876
874
|
if sb._has_failure and "--pdb" in sys_argv:
|
877
875
|
sb_config._do_sb_post_mortem = True
|
876
|
+
elif (
|
877
|
+
"--final-debug" in sys_argv
|
878
|
+
or "--final-trace" in sys_argv
|
879
|
+
or "--fdebug" in sys_argv
|
880
|
+
or "--ftrace" in sys_argv
|
881
|
+
):
|
882
|
+
sb_config._do_sb_final_trace = True
|
878
883
|
try:
|
879
884
|
sb.tearDown()
|
880
885
|
except Exception as t_e:
|
@@ -296,7 +296,7 @@ class SeleniumBrowser(Plugin):
|
|
296
296
|
help="""Designates the three device metrics of the mobile
|
297
297
|
emulator: CSS Width, CSS Height, and Pixel-Ratio.
|
298
298
|
Format: A comma-separated string with the 3 values.
|
299
|
-
|
299
|
+
Examples: "375,734,5" or "411,731,3" or "390,715,3"
|
300
300
|
Default: None. (Will use default values if None)""",
|
301
301
|
)
|
302
302
|
parser.addoption(
|
@@ -1163,16 +1163,6 @@ class SeleniumBrowser(Plugin):
|
|
1163
1163
|
)
|
1164
1164
|
self.options.use_wire = False
|
1165
1165
|
test.test.use_wire = False
|
1166
|
-
if self.options.mobile_emulator and self.options.undetectable:
|
1167
|
-
print(
|
1168
|
-
"\n"
|
1169
|
-
"SeleniumBase doesn't support mixing --uc with --mobile.\n"
|
1170
|
-
"(Only UC Mode without Mobile will be used for this run)\n"
|
1171
|
-
)
|
1172
|
-
self.options.mobile_emulator = False
|
1173
|
-
test.test.mobile_emulator = False
|
1174
|
-
self.options.user_agent = None
|
1175
|
-
test.test.user_agent = None
|
1176
1166
|
# Recorder Mode can still optimize scripts in --headless2 mode.
|
1177
1167
|
if self.options.recorder_mode and self.options.headless:
|
1178
1168
|
self.options.headless = False
|
@@ -1205,6 +1195,7 @@ class SeleniumBrowser(Plugin):
|
|
1205
1195
|
sb_config._SMALL_TIMEOUT = settings.SMALL_TIMEOUT
|
1206
1196
|
sb_config._LARGE_TIMEOUT = settings.LARGE_TIMEOUT
|
1207
1197
|
sb_config._context_of_runner = False # Context Manager Compatibility
|
1198
|
+
sb_config.mobile_emulator = self.options.mobile_emulator
|
1208
1199
|
sb_config.proxy_driver = self.options.proxy_driver
|
1209
1200
|
sb_config.multi_proxy = self.options.multi_proxy
|
1210
1201
|
# The driver will be received later
|
@@ -2,6 +2,7 @@
|
|
2
2
|
import logging
|
3
3
|
import os
|
4
4
|
import re
|
5
|
+
import requests
|
5
6
|
import subprocess
|
6
7
|
import sys
|
7
8
|
import time
|
@@ -138,8 +139,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
138
139
|
options._session = self
|
139
140
|
debug_host = "127.0.0.1"
|
140
141
|
debug_port = 9222
|
141
|
-
import requests
|
142
|
-
|
143
142
|
special_port_free = False # If the port isn't free, don't use 9222
|
144
143
|
try:
|
145
144
|
res = requests.get("http://127.0.0.1:9222", timeout=1)
|
@@ -151,7 +150,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
151
150
|
sys_argv = sys.argv
|
152
151
|
arg_join = " ".join(sys_argv)
|
153
152
|
from seleniumbase import config as sb_config
|
154
|
-
|
155
153
|
if (
|
156
154
|
(("-n" in sys.argv) or (" -n=" in arg_join) or ("-c" in sys.argv))
|
157
155
|
or (hasattr(sb_config, "multi_proxy") and sb_config.multi_proxy)
|
@@ -197,7 +195,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
197
195
|
keep_user_data_dir = True
|
198
196
|
else:
|
199
197
|
import tempfile
|
200
|
-
|
201
198
|
user_data_dir = os.path.normpath(tempfile.mkdtemp())
|
202
199
|
keep_user_data_dir = False
|
203
200
|
arg = "--user-data-dir=%s" % user_data_dir
|
@@ -206,7 +203,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
206
203
|
if not language:
|
207
204
|
try:
|
208
205
|
import locale
|
209
|
-
|
210
206
|
language = locale.getlocale()[0].replace("_", "-")
|
211
207
|
except Exception:
|
212
208
|
pass
|
@@ -241,7 +237,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
241
237
|
options.handle_prefs(user_data_dir)
|
242
238
|
try:
|
243
239
|
import json
|
244
|
-
|
245
240
|
with open(
|
246
241
|
os.path.join(
|
247
242
|
os.path.abspath(user_data_dir),
|
@@ -286,19 +281,22 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
286
281
|
)
|
287
282
|
self.browser_pid = browser.pid
|
288
283
|
service_ = None
|
284
|
+
log_output = subprocess.PIPE
|
285
|
+
if sys.version_info < (3, 8):
|
286
|
+
log_output = os.devnull
|
289
287
|
if patch_driver:
|
290
288
|
service_ = selenium.webdriver.chrome.service.Service(
|
291
289
|
executable_path=self.patcher.executable_path,
|
292
290
|
service_args=["--disable-build-check"],
|
293
291
|
port=port,
|
294
|
-
log_output=
|
292
|
+
log_output=log_output,
|
295
293
|
)
|
296
294
|
else:
|
297
295
|
service_ = selenium.webdriver.chrome.service.Service(
|
298
296
|
executable_path=driver_executable_path,
|
299
297
|
service_args=["--disable-build-check"],
|
300
298
|
port=port,
|
301
|
-
log_output=
|
299
|
+
log_output=log_output,
|
302
300
|
)
|
303
301
|
if hasattr(service_, "creationflags"):
|
304
302
|
setattr(service_, "creationflags", creationflags)
|
@@ -321,7 +319,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
321
319
|
return super().__getattribute__(item)
|
322
320
|
else:
|
323
321
|
import inspect
|
324
|
-
|
325
322
|
original = super().__getattribute__(item)
|
326
323
|
if inspect.ismethod(original) and not inspect.isclass(original):
|
327
324
|
def newfunc(*args, **kwargs):
|
@@ -455,7 +452,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
455
452
|
and not self.keep_user_data_dir
|
456
453
|
):
|
457
454
|
import shutil
|
458
|
-
|
459
455
|
for _ in range(5):
|
460
456
|
try:
|
461
457
|
shutil.rmtree(self.user_data_dir, ignore_errors=False)
|
@@ -506,7 +502,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
506
502
|
|
507
503
|
def find_chrome_executable():
|
508
504
|
from seleniumbase.core import detect_b_ver
|
509
|
-
|
510
505
|
binary_location = detect_b_ver.get_binary_location("google-chrome", True)
|
511
506
|
if os.path.exists(binary_location) and os.access(binary_location, os.X_OK):
|
512
507
|
return os.path.normpath(binary_location)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.20.0
|
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
|
@@ -82,7 +82,7 @@ Requires-Dist: trio==0.22.2
|
|
82
82
|
Requires-Dist: trio-websocket==0.11.1
|
83
83
|
Requires-Dist: wsproto==1.2.0
|
84
84
|
Requires-Dist: selenium==4.11.2; python_version < "3.8"
|
85
|
-
Requires-Dist: selenium==4.
|
85
|
+
Requires-Dist: selenium==4.14.0; python_version >= "3.8"
|
86
86
|
Requires-Dist: cssselect==1.2.0
|
87
87
|
Requires-Dist: sortedcontainers==2.4.0
|
88
88
|
Requires-Dist: fasteners==0.19
|
@@ -158,7 +158,7 @@ setup(
|
|
158
158
|
'trio-websocket==0.11.1',
|
159
159
|
'wsproto==1.2.0',
|
160
160
|
'selenium==4.11.2;python_version<"3.8"',
|
161
|
-
'selenium==4.
|
161
|
+
'selenium==4.14.0;python_version>="3.8"',
|
162
162
|
'cssselect==1.2.0',
|
163
163
|
"sortedcontainers==2.4.0",
|
164
164
|
'fasteners==0.19',
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.19.2 → seleniumbase-4.20.0}/examples/behave_bdd/features/steps/calculator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|