seleniumbase 4.15.14__tar.gz → 4.16.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.15.14 → seleniumbase-4.16.0}/PKG-INFO +4 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/README.md +3 -3
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/ReadMe.md +18 -28
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/custom_settings.py +13 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/hack_the_planet.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/ReadMe.md +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_download_files.py +1 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_error_page.py +1 -1
- seleniumbase-4.16.0/examples/test_geolocation.py +41 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/chinese_test_1.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/korean_test_1.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/spanish_test_1.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/uc_cdp_events.py +11 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/verify_undetected.py +11 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/customizing_test_runs.md +5 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/happy_customers.md +1 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/method_summary.md +2 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/syntax_formats.md +5 -5
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/webdriver_installation.md +3 -3
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/requirements.txt +5 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/requirements.txt +4 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/sbase/__init__.py +1 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/__init__.py +1 -0
- seleniumbase-4.16.0/seleniumbase/__version__.py +2 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/behave/behave_sb.py +12 -19
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/exceptions.py +5 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/config/settings.py +7 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/ReadMe.md +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/run.py +5 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_behave_gui.py +6 -9
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_caseplans.py +2 -5
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_commander.py +5 -8
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_install.py +43 -54
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_mkchart.py +12 -7
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_mkfile.py +1 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_mkpres.py +6 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_print.py +2 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_recorder.py +3 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/browser_launcher.py +13 -27
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/capabilities_parser.py +2 -3
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/detect_b_ver.py +3 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/jqc_helper.py +2 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/mysql.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/proxy_helper.py +65 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/recorder_helper.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/s3_manager.py +29 -23
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/session_helper.py +2 -6
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/settings_parser.py +2 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/base_case.py +31 -13
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/constants.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/css_to_xpath.py +1 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/errors.py +2 -7
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/js_utils.py +8 -16
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/page_actions.py +3 -6
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/page_utils.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/shared_utils.py +26 -79
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/xpath_to_css.py +1 -3
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/base_plugin.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/basic_test_info.py +1 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/db_reporting_plugin.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/driver_manager.py +2 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/page_source.py +2 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/pytest_plugin.py +9 -8
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/s3_logging_plugin.py +20 -9
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/sb_manager.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/screen_shots.py +2 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/selenium_plugin.py +5 -8
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/translator.py +397 -396
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/__init__.py +17 -37
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +2 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/grid_node.py +2 -1
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/PKG-INFO +4 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/SOURCES.txt +1 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/requires.txt +4 -4
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/setup.py +4 -4
- seleniumbase-4.15.14/seleniumbase/__version__.py +0 -2
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/Workflows.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/pages.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/python-nightly-mac.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/python-nightly-ubuntu.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/python-nightly-windows.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/python-package-legacy.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.github/workflows/python-package.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.gitignore +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/.travis.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/CHANGELOG.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/CNAME +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/CODE_OF_CONDUCT.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/CONTRIBUTING.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/Dockerfile +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/LICENSE +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/MANIFEST.in +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/SECURITY.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/_config.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/azure-pipelines.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/basic_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/behave.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/behave.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/calculator.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/environment.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/fail_page.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/realworld.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/steps/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/steps/calculator.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/steps/fail_page.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/steps/imported.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/behave_bdd/features/swag_labs.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/base_test_case.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/boilerplate_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/classic_obj_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/page_objects.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/google_objects.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/google_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/sb_swag_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/swag_labs_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/samples/test_page_objects.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/boilerplates/sb_fixture_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/mac_cap_file.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/sample_cap_file_BS.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/sample_cap_file_SL.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/selenoid_cap_file.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/capabilities/win10_cap_file.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/case_summary.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/chart_presentation.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/my_chart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/pie_charts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/test_area_chart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/test_display_chart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/test_line_chart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/test_multi_series.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/chart_maker/test_save_chart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/coffee_cart_tests.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/desktop_apps/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/desktop_apps/recorder.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/dialog_boxes/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/dialog_boxes/dialog_box_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/edge_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/example_config.cfg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/example_logs/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/example_logs/basic_test_info.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/example_logs/page_source.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/example_logs/screenshot.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/github_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/gui_test_runner.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/handle_alert_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/iframe_tests.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/locale_code_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/master_qa/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/master_qa/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/master_qa/basic_masterqa_test_0.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/master_qa/masterqa_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/master_qa/pytest.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/example_spec.js +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/example_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/input_spec.js +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/input_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/mat_paginator_spec.js +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/protractor/mat_paginator_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/messy_raw.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/pytest.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/refined_raw.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/migration/raw_selenium/simple_sbase.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/my_first_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/nth_child_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/demo_page.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/load_html_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/test_demo_page.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/test_handle_alerts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/test_request_fixture.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/offline_examples/test_user_agent.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/old_wordle_script.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/parameterized_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/performance_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/core_presentation.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/edge_presentation.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/fundamentals.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/my_presentation.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/presenter/py_virtual_envs.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/proxy_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/pytest.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/rate_limiting_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_browser_launcher.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_call.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_driver_context.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_file_call.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_main_call.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_parameter_script.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_sb.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/raw_test_scripts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/setup.cfg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/shadow_root_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/swag_labs_user_tests.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_apple_site.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_assert_elements.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_calculator.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_canvas.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_checkboxes.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_chinese_pdf.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_chromedriver.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_coffee_cart.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_console_logging.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_contains_selector.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_cycle_elements.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_decryption.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_deferred_asserts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_demo_site.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_detect_404s.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_docs_site.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_double_click.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_download_images.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_drag_and_drop.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_event_firing.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_fail.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_get_locale_code.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_get_pdf_text.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_get_user_agent.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_hack_search.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_image_saving.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_inspect_html.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_login.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_markers.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_mfa_login.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_multiple_drivers.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_null.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_override_driver.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_override_sb_fixture.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_parse_soup.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_pdf_asserts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_pytest_parametrize.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_repeat_tests.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_request_sb_fixture.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_save_screenshots.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_sb_fixture.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_scrape_bing.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_select_options.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_shadow_dom.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_show_file_choosers.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_skype_site.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_suite.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_swag_labs.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_tinymce.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_todomvc.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_url_asserts.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_usefixtures.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_verify_chromedriver.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_window_switching.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_xfail.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/test_xkcd.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/time_limit_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/bootstrap_google_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/driverjs_maps_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/google_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/hopscotch_google_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/introjs_google_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/maps_introjs_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/octocat_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/shepherd_google_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/tour_examples/xkcd_tour.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/dutch_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/english_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/french_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/italian_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/japanese_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/portuguese_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/pytest.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/translations/russian_test_1.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/unit_tests/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/unit_tests/verify_framework.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/upgrade_chromedriver.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/upload_file_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/user_agent_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/layout_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/python_home_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/test_layout_fail.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/visual_testing/xkcd_visual_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/wordle_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/xpath_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/examples/youtube_search_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/behave_gui.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/case_plans.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/chinese.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/commander.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/demo_mode.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/desired_capabilities.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/features_list.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/hidden_files_info.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/how_it_works.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/html_inspector.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/install.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/install_python_pip_git.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/js_package_manager.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/locale_codes.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/mobile_testing.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/mysql_installation.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/recorder_mode.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/shadow_dom.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/thank_you.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/translations.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/useful_grep_commands.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/using_safari_driver.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/verify_webdriver.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/help_docs/virtualenv_instructions.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/install.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/azure/jenkins/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/behave.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/behave.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/calculator.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/environment.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/fail_page.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/realworld.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/steps/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/steps/calculator.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/steps/fail_page.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/steps/real_world.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/behave/features/swag_labs.feature +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/brython/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/brython/index.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/brython/index.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/brython/library.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/docker/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/docker/docker-entrypoint.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/docker/docker_config.cfg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/docker/run_docker_test_in_firefox.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/github/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/github/workflows/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/github/workflows/extras.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/google_cloud/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/katalon/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/linux/Linuxfile.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/linux/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/linux/Xvfb_launcher.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/linux/jenkins_permissions.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/linux/tomcat_permissions.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/index.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/my_first_test.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/npm-shrinkwrap.json +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/package.json +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/server.js +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/node_js/test_demo_site.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/integrations/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs.yml +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/ReadMe.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/docs_instructions.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/dash_pie.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/dash_pie_2.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/dash_pie_3.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/favicon.ico +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/grad_logo.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/green_icon.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/green_logo.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/green_logo2.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/green_logo3.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo3.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo3a.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo3b.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo3c.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo4.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo5.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo6.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/logo7.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/sb_icon.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/sb_logo_10.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/sb_logo_7.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/side_by_side.png +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/social/share_facebook.svg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/social/share_github.svg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/social/share_gitter.svg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/social/share_instagram.svg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/img/social/share_twitter.svg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/index.html +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/mkdocs_build/prepare.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/pytest.ini +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/sbase/ReadMe.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/sbase/__main__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/sbase/steps.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/drivers/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/masterqa/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/resources/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/resources/favicon.ico +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/setup.cfg +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/virtualenv_install.sh +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.0}/win_install.bat +0 -0
- {seleniumbase-4.15.14 → seleniumbase-4.16.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.16.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
|
@@ -197,7 +197,7 @@ class CoffeeCartTest(BaseCase):
|
|
197
197
|
|
198
198
|
<p>💡 With raw Selenium, commands that use selectors need to specify the type of selector (eg. <code>"css selector", "button#myButton"</code>). With SeleniumBase, there's auto-detection between CSS Selectors and XPath, which means you don't need to specify the type of selector in your commands (<i>but optionally you could</i>).</p>
|
199
199
|
|
200
|
-
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in "\n"
|
200
|
+
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in <code>"\n"</code>.<br />With raw Selenium, those actions require multiple method calls.</p>
|
201
201
|
|
202
202
|
<p>💡 SeleniumBase uses default timeout values when not set:<br />
|
203
203
|
✅<code>self.click("button")</code><br />
|
@@ -720,8 +720,8 @@ pytest test_coffee_cart.py --trace
|
|
720
720
|
--incognito # (Enable Chrome's Incognito mode.)
|
721
721
|
--guest # (Enable Chrome's Guest mode.)
|
722
722
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
723
|
-
--
|
724
|
-
--reuse-class-session
|
723
|
+
--rs | --reuse-session # (Reuse browser session for all tests.)
|
724
|
+
--rcs | --reuse-class-session # (Reuse session for tests in class.)
|
725
725
|
--crumbs # (Delete all cookies between tests reusing a session.)
|
726
726
|
--disable-beforeunload # (Disable the "beforeunload" event on Chrome.)
|
727
727
|
--window-size=WIDTH,HEIGHT # (Set the browser's starting window size.)
|
@@ -136,7 +136,7 @@ class CoffeeCartTest(BaseCase):
|
|
136
136
|
|
137
137
|
<p>💡 With raw Selenium, commands that use selectors need to specify the type of selector (eg. <code>"css selector", "button#myButton"</code>). With SeleniumBase, there's auto-detection between CSS Selectors and XPath, which means you don't need to specify the type of selector in your commands (<i>but optionally you could</i>).</p>
|
138
138
|
|
139
|
-
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in "\n"
|
139
|
+
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in <code>"\n"</code>.<br />With raw Selenium, those actions require multiple method calls.</p>
|
140
140
|
|
141
141
|
<p>💡 SeleniumBase uses default timeout values when not set:<br />
|
142
142
|
✅<code>self.click("button")</code><br />
|
@@ -659,8 +659,8 @@ pytest test_coffee_cart.py --trace
|
|
659
659
|
--incognito # (Enable Chrome's Incognito mode.)
|
660
660
|
--guest # (Enable Chrome's Guest mode.)
|
661
661
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
662
|
-
--
|
663
|
-
--reuse-class-session
|
662
|
+
--rs | --reuse-session # (Reuse browser session for all tests.)
|
663
|
+
--rcs | --reuse-class-session # (Reuse session for tests in class.)
|
664
664
|
--crumbs # (Delete all cookies between tests reusing a session.)
|
665
665
|
--disable-beforeunload # (Disable the "beforeunload" event on Chrome.)
|
666
666
|
--window-size=WIDTH,HEIGHT # (Set the browser's starting window size.)
|
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
--------
|
21
21
|
|
22
|
-
Run an [example test](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py): (Default option: ``--
|
22
|
+
Run an [example test](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py): (Default option: ``--chrome``)
|
23
23
|
|
24
24
|
```bash
|
25
25
|
pytest test_demo_site.py
|
@@ -37,7 +37,7 @@ pytest my_first_test.py --browser=firefox
|
|
37
37
|
|
38
38
|
--------
|
39
39
|
|
40
|
-
Run an example test in
|
40
|
+
Run an example test in ``--demo`` mode: (highlight assertions)
|
41
41
|
|
42
42
|
```bash
|
43
43
|
pytest test_swag_labs.py --demo
|
@@ -67,7 +67,7 @@ pytest wordle_test.py
|
|
67
67
|
|
68
68
|
--------
|
69
69
|
|
70
|
-
Run an example test in
|
70
|
+
Run an example test in ``--headless`` mode: (invisible browser)
|
71
71
|
|
72
72
|
```bash
|
73
73
|
pytest my_first_test.py --headless
|
@@ -85,7 +85,7 @@ pytest test_swag_labs.py --mobile
|
|
85
85
|
|
86
86
|
--------
|
87
87
|
|
88
|
-
Run
|
88
|
+
Run an [example test](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_xkcd.py) in ``--demo`` mode: (highlight assertions)
|
89
89
|
|
90
90
|
```bash
|
91
91
|
pytest test_xkcd.py --demo
|
@@ -103,10 +103,10 @@ pytest test_suite.py -v
|
|
103
103
|
|
104
104
|
--------
|
105
105
|
|
106
|
-
Run a test suite
|
106
|
+
Run a test suite using multiple parallel processes (``-n=NUM``):
|
107
107
|
|
108
108
|
```bash
|
109
|
-
pytest test_suite.py -n=
|
109
|
+
pytest test_suite.py -n=8
|
110
110
|
```
|
111
111
|
|
112
112
|
--------
|
@@ -127,7 +127,7 @@ pytest test_suite.py --dashboard
|
|
127
127
|
|
128
128
|
--------
|
129
129
|
|
130
|
-
Run a test suite and generate a pytest report:
|
130
|
+
Run a test suite and generate a ``pytest`` report:
|
131
131
|
|
132
132
|
```bash
|
133
133
|
pytest test_suite.py --html=report.html
|
@@ -143,15 +143,17 @@ pytest test_fail.py
|
|
143
143
|
|
144
144
|
--------
|
145
145
|
|
146
|
-
Run a failing test
|
146
|
+
Run a failing test that activates ``pdb`` debug mode on failure:
|
147
147
|
|
148
148
|
```bash
|
149
149
|
pytest test_fail.py --pdb -s
|
150
150
|
```
|
151
151
|
|
152
|
+
> (**``pdb``** commands: ``n``, ``c``, ``s``, ``u``, ``d`` => ``next``, ``continue``, ``step``, ``up``, ``down``)
|
153
|
+
|
152
154
|
--------
|
153
155
|
|
154
|
-
Run a test suite that demonstrates the use of pytest markers:
|
156
|
+
Run a test suite that demonstrates the use of ``pytest`` markers:
|
155
157
|
|
156
158
|
```bash
|
157
159
|
pytest -m marker_test_suite -v
|
@@ -162,7 +164,7 @@ pytest -m marker_test_suite -v
|
|
162
164
|
Run a test suite that reuses the browser session between tests:
|
163
165
|
|
164
166
|
```bash
|
165
|
-
pytest test_suite.py --
|
167
|
+
pytest test_suite.py --rs
|
166
168
|
```
|
167
169
|
|
168
170
|
--------
|
@@ -183,7 +185,7 @@ pytest upload_file_test.py
|
|
183
185
|
|
184
186
|
--------
|
185
187
|
|
186
|
-
|
188
|
+
🎖️ **SeleniumBase Commander** is a GUI for ``pytest``:
|
187
189
|
|
188
190
|
```bash
|
189
191
|
sbase gui
|
@@ -195,15 +197,13 @@ sbase gui
|
|
195
197
|
|
196
198
|
<b>SeleniumBase tests can also be run with ``pynose``:</b>
|
197
199
|
|
198
|
-
Run an example test with pynose:
|
199
|
-
|
200
200
|
```bash
|
201
201
|
pynose my_first_test.py
|
202
202
|
```
|
203
203
|
|
204
204
|
--------
|
205
205
|
|
206
|
-
Run an example test suite and generate a pynose test report:
|
206
|
+
Run an example test suite and generate a ``pynose`` test report:
|
207
207
|
|
208
208
|
```bash
|
209
209
|
pynose test_suite.py --report --show-report
|
@@ -211,7 +211,7 @@ pynose test_suite.py --report --show-report
|
|
211
211
|
|
212
212
|
--------
|
213
213
|
|
214
|
-
Run an example test using a pynose configuration file:
|
214
|
+
Run an example test using a ``pynose`` configuration file:
|
215
215
|
|
216
216
|
```bash
|
217
217
|
pynose my_first_test.py --config=example_config.cfg
|
@@ -219,7 +219,7 @@ pynose my_first_test.py --config=example_config.cfg
|
|
219
219
|
|
220
220
|
--------
|
221
221
|
|
222
|
-
For more advanced run commands
|
222
|
+
For more advanced **run commands**, such as using a proxy server, see [../help_docs/customizing_test_runs.md](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md)
|
223
223
|
|
224
224
|
--------
|
225
225
|
|
@@ -229,7 +229,7 @@ If you just need to perform some quick website verification on various devices,
|
|
229
229
|
|
230
230
|
--------
|
231
231
|
|
232
|
-
To make things easier, here's a simple GUI program that allows you to run a few example tests by pressing a button:
|
232
|
+
To make things easier, here's a **simple GUI program** that allows you to run a few example tests by pressing a button:
|
233
233
|
|
234
234
|
```bash
|
235
235
|
python gui_test_runner.py
|
@@ -237,17 +237,7 @@ python gui_test_runner.py
|
|
237
237
|
|
238
238
|
<img src="https://seleniumbase.github.io/cdn/img/gui_test_runner.png" title="GUI Test Runner" width="320" />
|
239
239
|
|
240
|
-
(The newer [SeleniumBase Commander](https://seleniumbase.io/help_docs/commander/) improves on that.)
|
241
|
-
|
242
|
-
--------
|
243
|
-
|
244
|
-
🎖️ To launch the SeleniumBase Commander GUI for pytest:
|
245
|
-
|
246
|
-
```bash
|
247
|
-
sbase gui
|
248
|
-
```
|
249
|
-
|
250
|
-
<img src="https://seleniumbase.github.io/cdn/img/sbase_commander_wide.png" title="SeleniumBase Commander" width="600">
|
240
|
+
(The newer **[SeleniumBase Commander](https://seleniumbase.io/help_docs/commander/)** improves on that.)
|
251
241
|
|
252
242
|
--------
|
253
243
|
|
@@ -19,10 +19,22 @@ PAGE_LOAD_TIMEOUT = 120
|
|
19
19
|
# Selenium default = "normal"
|
20
20
|
PAGE_LOAD_STRATEGY = "normal"
|
21
21
|
|
22
|
-
# If
|
22
|
+
# If True, existing logs from past test runs will be saved and take up space.
|
23
|
+
# If False, only the logs from the most recent test run will be saved locally.
|
24
|
+
# You can also archive existing logs on the command line with: "--archive_logs"
|
23
25
|
ARCHIVE_EXISTING_LOGS = False
|
26
|
+
|
27
|
+
# If True, existing downloads from past runs will be saved and take up space.
|
28
|
+
# If False, only the downloads from the most recent run will be saved locally.
|
24
29
|
ARCHIVE_EXISTING_DOWNLOADS = False
|
25
30
|
|
31
|
+
# If True, the last page screenshot will include the <body> and background.
|
32
|
+
# If False, the last page screenshot will only include the <body> section.
|
33
|
+
# Depending on the screen size, including a background could make the <body>
|
34
|
+
# appear very small in the screenshot, which may require manually zooming in
|
35
|
+
# on the <body> to see page details if you decide to include the background.
|
36
|
+
SCREENSHOT_WITH_BACKGROUND = False
|
37
|
+
|
26
38
|
# If True, switch to new tabs automatically if a click opens a new one.
|
27
39
|
# (Only happens if the initial tab is still on same URL as before.)
|
28
40
|
SWITCH_TO_NEW_TABS_ON_CLICK = True
|
@@ -196,7 +196,7 @@ class HackTests(BaseCase):
|
|
196
196
|
self.set_text_content('a[prettyslug="your-profile"]', "BASE")
|
197
197
|
self.set_text_content('a[prettyslug="connect-tools"]', "ARE")
|
198
198
|
self.set_text_content('a[prettyslug="administration"]', "BELONG")
|
199
|
-
self.set_text_content('a[prettyslug
|
199
|
+
self.set_text_content('a[prettyslug*="tutorials"]', "TO US")
|
200
200
|
self.set_text_content("h1.article_title", aybabtu)
|
201
201
|
self.highlight("h1", loops=4, scroll=False)
|
202
202
|
self.highlight("div#global_menu", loops=2, scroll=False)
|
@@ -205,7 +205,7 @@ class HackTests(BaseCase):
|
|
205
205
|
self.highlight('a[prettyslug="your-profile"]', loops=2, scroll=False)
|
206
206
|
self.highlight('a[prettyslug="connect-tools"]', loops=1, scroll=False)
|
207
207
|
self.highlight('a[prettyslug="administration"]', loops=1, scroll=False)
|
208
|
-
self.highlight('a[prettyslug
|
208
|
+
self.highlight('a[prettyslug*="tutorials"]', loops=2, scroll=False)
|
209
209
|
self.highlight("h1.article_title", loops=5, scroll=False)
|
210
210
|
|
211
211
|
self.open("https://kubernetes.io/")
|
@@ -47,7 +47,7 @@ With a complete test automation framework built, most of the hard work is alread
|
|
47
47
|
|
48
48
|
<p>💡 With raw Selenium, commands that use selectors need to specify the type of selector (eg. <code>"css selector", "button#myButton"</code>). With SeleniumBase, there's auto-detection between CSS Selectors and XPath, which means you don't need to specify the type of selector in your commands (<i>but optionally you could</i>).</p>
|
49
49
|
|
50
|
-
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in "\n"
|
50
|
+
<p>💡 SeleniumBase methods often perform multiple actions in a single method call. For example, <code>self.type(selector,text)</code> does the following:<br />1. Waits for the element to be visible.<br />2. Waits for the element to be interactive.<br />3. Clears the text field.<br />4. Types in the new text.<br />5. Presses Enter/Submit if the text ends in <code>"\n"</code>.<br />With raw Selenium, those actions require multiple method calls.</p>
|
51
51
|
|
52
52
|
<p>💡 SeleniumBase uses default timeout values when not set, which means that methods automatically wait for elements to appear (<i>up to the timeout limit</i>) before failing:<br />✅<code>self.click("button")</code><br />With raw Selenium, methods would fail instantly (<i>by default</i>) if an element needed more time to load:<br />❌<code>self.driver.find_element(by="css selector", value="button").click()</code><br />(Reliable code is better than unreliable code.)</p>
|
53
53
|
|
@@ -64,4 +64,4 @@ With a complete test automation framework built, most of the hard work is alread
|
|
64
64
|
|
65
65
|
--------
|
66
66
|
|
67
|
-
[<img src="https://seleniumbase.io/cdn/img/fancy_logo_14.png" title="SeleniumBase" width="290">](https://github.com/seleniumbase/SeleniumBase)
|
67
|
+
[<img src="https://seleniumbase.github.io/cdn/img/fancy_logo_14.png" title="SeleniumBase" width="290">](https://github.com/seleniumbase/SeleniumBase)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
from seleniumbase import BaseCase
|
2
|
+
BaseCase.main(__name__, __file__)
|
3
|
+
|
4
|
+
|
5
|
+
class TestGeolocation(BaseCase):
|
6
|
+
def tearDown(self):
|
7
|
+
self.save_teardown_screenshot() # If test fails, or if "--screenshot"
|
8
|
+
if self.is_chromium() and not self._multithreaded:
|
9
|
+
# Reset Permissions and GeolocationOverride
|
10
|
+
self.execute_cdp_cmd("Browser.resetPermissions", {})
|
11
|
+
self.execute_cdp_cmd("Emulation.setGeolocationOverride", {})
|
12
|
+
super().tearDown()
|
13
|
+
|
14
|
+
def test_geolocation(self):
|
15
|
+
self.open("about:blank")
|
16
|
+
if self._multithreaded:
|
17
|
+
self.skip("Skipping test in multi-threaded mode.")
|
18
|
+
if not self.is_chromium():
|
19
|
+
print("\n* execute_cdp_cmd() is only for Chromium browsers")
|
20
|
+
self.skip("execute_cdp_cmd() is only for Chromium browsers")
|
21
|
+
self.execute_cdp_cmd(
|
22
|
+
"Browser.grantPermissions",
|
23
|
+
{
|
24
|
+
"origin": "https://www.openstreetmap.org/",
|
25
|
+
"permissions": ["geolocation"],
|
26
|
+
},
|
27
|
+
)
|
28
|
+
self.execute_cdp_cmd(
|
29
|
+
"Emulation.setGeolocationOverride",
|
30
|
+
{
|
31
|
+
"latitude": 48.87645,
|
32
|
+
"longitude": 2.26340,
|
33
|
+
"accuracy": 100,
|
34
|
+
},
|
35
|
+
)
|
36
|
+
self.open("https://www.openstreetmap.org/")
|
37
|
+
self.click("span.geolocate")
|
38
|
+
self.assert_url_contains("48.87645/2.26340")
|
39
|
+
self.save_screenshot_to_logs()
|
40
|
+
if not (self.headless or self.headless2 or self.xvfb):
|
41
|
+
self.sleep(2.5)
|
@@ -16,7 +16,7 @@ class 我的测试类(硒测试用例):
|
|
16
16
|
self.输入文本("#searchInput", "麻婆豆腐")
|
17
17
|
self.单击("#searchButton")
|
18
18
|
self.断言文本("麻婆豆腐", "#firstHeading")
|
19
|
-
self.断言元素('
|
19
|
+
self.断言元素('figure:contains("一家中餐館的麻婆豆腐")')
|
20
20
|
self.输入文本("#searchInput", "精武英雄")
|
21
21
|
self.单击("#searchButton")
|
22
22
|
self.断言元素('img[src*="Fist_of_legend.jpg"]')
|
@@ -11,11 +11,11 @@ class 테스트_클래스(셀레늄_테스트_케이스):
|
|
11
11
|
self.JS_입력("#searchform input", "김치")
|
12
12
|
self.클릭("#searchform button")
|
13
13
|
self.텍스트_확인("김치", "#firstHeading")
|
14
|
-
self.요소_확인('img[
|
14
|
+
self.요소_확인('img[src*="Various_kimchi.jpg"]')
|
15
15
|
self.링크_텍스트_확인("한국 요리")
|
16
16
|
self.JS_입력("#searchform input", "비빔밥")
|
17
17
|
self.클릭("#searchform button")
|
18
18
|
self.텍스트_확인("비빔밥", "#firstHeading")
|
19
|
-
self.요소_확인('img[
|
19
|
+
self.요소_확인('img[src*="Dolsot-bibimbap.jpg"]')
|
20
20
|
self.링크_텍스트를_클릭합니다("돌솥비빔밥")
|
21
21
|
self.텍스트_확인("돌솥비빔밥", "#firstHeading")
|
@@ -11,11 +11,11 @@ class MiClaseDePrueba(CasoDePrueba):
|
|
11
11
|
self.escriba('[name="search"]', "Parque de Atracciones Tibidabo")
|
12
12
|
self.haga_clic('button:contains("Buscar")')
|
13
13
|
self.verificar_texto("Tibidabo", "#firstHeading")
|
14
|
-
self.verificar_elemento('img[
|
14
|
+
self.verificar_elemento('img[src*="Tibidabo"]')
|
15
15
|
self.escriba('input[name="search"]', "Palma de Mallorca")
|
16
16
|
self.haga_clic('button:contains("Buscar")')
|
17
17
|
self.verificar_texto("Palma de Mallorca", "#firstHeading")
|
18
|
-
self.verificar_elemento('img[
|
18
|
+
self.verificar_elemento('img[src*="Palma"]')
|
19
19
|
self.volver()
|
20
20
|
self.verificar_url_contiene("Tibidabo")
|
21
21
|
self.adelante()
|
@@ -39,4 +39,14 @@ class CDPTests(BaseCase):
|
|
39
39
|
try:
|
40
40
|
self.verify_success()
|
41
41
|
except Exception:
|
42
|
-
self.
|
42
|
+
if self.is_element_visible('input[value*="Verify"]'):
|
43
|
+
self.click('input[value*="Verify"]')
|
44
|
+
elif self.is_element_visible('iframe[title*="challenge"]'):
|
45
|
+
self.switch_to_frame('iframe[title*="challenge"]')
|
46
|
+
self.click("span.mark")
|
47
|
+
else:
|
48
|
+
self.fail_me()
|
49
|
+
try:
|
50
|
+
self.verify_success()
|
51
|
+
except Exception:
|
52
|
+
self.fail_me()
|
@@ -28,4 +28,14 @@ class UndetectedTest(BaseCase):
|
|
28
28
|
try:
|
29
29
|
self.verify_success()
|
30
30
|
except Exception:
|
31
|
-
self.
|
31
|
+
if self.is_element_visible('input[value*="Verify"]'):
|
32
|
+
self.click('input[value*="Verify"]')
|
33
|
+
elif self.is_element_visible('iframe[title*="challenge"]'):
|
34
|
+
self.switch_to_frame('iframe[title*="challenge"]')
|
35
|
+
self.click("span.mark")
|
36
|
+
else:
|
37
|
+
self.fail_me()
|
38
|
+
try:
|
39
|
+
self.verify_success()
|
40
|
+
except Exception:
|
41
|
+
self.fail_me()
|
@@ -73,6 +73,9 @@ pytest test_swag_labs.py --mobile
|
|
73
73
|
# Run mobile tests specifying CSS Width, CSS Height, and Pixel-Ratio
|
74
74
|
pytest test_swag_labs.py --mobile --metrics="360,640,2"
|
75
75
|
|
76
|
+
# Run a test with an option to evade bot-detection services
|
77
|
+
pytest verify_undetected.py --uc
|
78
|
+
|
76
79
|
# Run tests while changing SeleniumBase default settings
|
77
80
|
pytest my_first_test.py --settings-file=custom_settings.py
|
78
81
|
```
|
@@ -177,8 +180,8 @@ pytest my_first_test.py --settings-file=custom_settings.py
|
|
177
180
|
--incognito # (Enable Chrome's Incognito mode.)
|
178
181
|
--guest # (Enable Chrome's Guest mode.)
|
179
182
|
--devtools # (Open Chrome's DevTools when the browser opens.)
|
180
|
-
--
|
181
|
-
--reuse-class-session
|
183
|
+
--rs | --reuse-session # (Reuse browser session for all tests.)
|
184
|
+
--rcs | --reuse-class-session # (Reuse session for tests in class.)
|
182
185
|
--crumbs # (Delete all cookies between tests reusing a session.)
|
183
186
|
--disable-beforeunload # (Disable the "beforeunload" event on Chrome.)
|
184
187
|
--window-size=WIDTH,HEIGHT # (Set the browser's starting window size.)
|
@@ -33,6 +33,7 @@
|
|
33
33
|
* [Singapore Institute of Tech](https://www.singaporetech.edu.sg)
|
34
34
|
* [Mississippi State University](https://www.msstate.edu/)
|
35
35
|
* [The New York Public Libary](https://www.nypl.org/)
|
36
|
+
* [Boehringer Ingelheim](https://www.boehringer-ingelheim.com/)
|
36
37
|
* [Queen's University](https://www.queensu.ca/)
|
37
38
|
* [L1NNA Laboratory](https://l1nna.com/)
|
38
39
|
* [Canfield Scientific](https://www.canfieldsci.com/)
|
@@ -420,7 +420,7 @@ class 我的测试类(硒测试用例):
|
|
420
420
|
self.输入文本("#searchInput", "麻婆豆腐")
|
421
421
|
self.单击("#searchButton")
|
422
422
|
self.断言文本("麻婆豆腐", "#firstHeading")
|
423
|
-
self.断言元素('
|
423
|
+
self.断言元素('figure:contains("一家中餐館的麻婆豆腐")')
|
424
424
|
self.输入文本("#searchInput", "精武英雄")
|
425
425
|
self.单击("#searchButton")
|
426
426
|
self.断言元素('img[src*="Fist_of_legend.jpg"]')
|
@@ -572,12 +572,12 @@ class 테스트_클래스(셀레늄_테스트_케이스):
|
|
572
572
|
self.JS_입력("#searchform input", "김치")
|
573
573
|
self.클릭("#searchform button")
|
574
574
|
self.텍스트_확인("김치", "#firstHeading")
|
575
|
-
self.요소_확인('img[
|
575
|
+
self.요소_확인('img[src*="Various_kimchi.jpg"]')
|
576
576
|
self.링크_텍스트_확인("한국 요리")
|
577
577
|
self.JS_입력("#searchform input", "비빔밥")
|
578
578
|
self.클릭("#searchform button")
|
579
579
|
self.텍스트_확인("비빔밥", "#firstHeading")
|
580
|
-
self.요소_확인('img[
|
580
|
+
self.요소_확인('img[src*="Dolsot-bibimbap.jpg"]')
|
581
581
|
self.링크_텍스트를_클릭합니다("돌솥비빔밥")
|
582
582
|
self.텍스트_확인("돌솥비빔밥", "#firstHeading")
|
583
583
|
```
|
@@ -667,11 +667,11 @@ class MiClaseDePrueba(CasoDePrueba):
|
|
667
667
|
self.escriba('[name="search"]', "Parque de Atracciones Tibidabo")
|
668
668
|
self.haga_clic('button:contains("Buscar")')
|
669
669
|
self.verificar_texto("Tibidabo", "#firstHeading")
|
670
|
-
self.verificar_elemento('img[
|
670
|
+
self.verificar_elemento('img[src*="Tibidabo"]')
|
671
671
|
self.escriba('input[name="search"]', "Palma de Mallorca")
|
672
672
|
self.haga_clic('button:contains("Buscar")')
|
673
673
|
self.verificar_texto("Palma de Mallorca", "#firstHeading")
|
674
|
-
self.verificar_elemento('img[
|
674
|
+
self.verificar_elemento('img[src*="Palma"]')
|
675
675
|
self.volver()
|
676
676
|
self.verificar_url_contiene("Tibidabo")
|
677
677
|
self.adelante()
|
@@ -19,11 +19,11 @@ If the necessary driver is not found in this location while running tests, Selen
|
|
19
19
|
* You can also download specific versions of drivers. Examples:
|
20
20
|
|
21
21
|
```bash
|
22
|
-
sbase get chromedriver
|
23
|
-
sbase get chromedriver
|
22
|
+
sbase get chromedriver 114
|
23
|
+
sbase get chromedriver 114.0.5735.90
|
24
24
|
sbase get chromedriver latest
|
25
25
|
sbase get chromedriver latest-1
|
26
|
-
sbase get edgedriver
|
26
|
+
sbase get edgedriver 114.0.1823.82
|
27
27
|
```
|
28
28
|
|
29
29
|
(NOTE: ``sbase`` is a shortcut for ``seleniumbase``)
|
@@ -3,10 +3,11 @@
|
|
3
3
|
|
4
4
|
regex>=2023.6.3
|
5
5
|
pkginfo>=1.9.6
|
6
|
+
PyYAML>=6.0.1
|
6
7
|
readme-renderer>=40.0
|
7
|
-
pymdown-extensions>=10.
|
8
|
+
pymdown-extensions>=10.1
|
8
9
|
importlib-metadata>=6.8.0
|
9
|
-
pipdeptree>=2.
|
10
|
+
pipdeptree>=2.10.2
|
10
11
|
bleach>=6.0.0
|
11
12
|
docutils>=0.20.1
|
12
13
|
python-dateutil>=2.8.2
|
@@ -15,7 +16,7 @@ joblib==1.3.1
|
|
15
16
|
Markdown==3.3.7
|
16
17
|
MarkupSafe==2.1.3
|
17
18
|
Jinja2==3.1.2
|
18
|
-
click==8.1.
|
19
|
+
click==8.1.5
|
19
20
|
ghp-import==2.1.0
|
20
21
|
lunr==0.6.2
|
21
22
|
nltk==3.8.1
|
@@ -27,7 +28,7 @@ cssselect2==0.7.0
|
|
27
28
|
tinycss2==1.2.1
|
28
29
|
defusedxml==0.7.1
|
29
30
|
mkdocs==1.4.3
|
30
|
-
mkdocs-material==9.1.
|
31
|
+
mkdocs-material==9.1.19
|
31
32
|
mkdocs-exclude-search==0.6.5
|
32
33
|
mkdocs-simple-hooks==0.1.5
|
33
34
|
mkdocs-material-extensions==1.1.1
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pip>=21.3.1;python_version<"3.7"
|
2
|
-
pip>=23.
|
2
|
+
pip>=23.2;python_version>="3.7"
|
3
3
|
packaging>=21.3;python_version<"3.7"
|
4
4
|
packaging>=23.1;python_version>="3.7"
|
5
5
|
setuptools>=59.6.0;python_version<"3.7"
|
@@ -12,7 +12,7 @@ certifi>=2023.5.7
|
|
12
12
|
filelock>=3.4.1;python_version<"3.7"
|
13
13
|
filelock>=3.12.2;python_version>="3.7"
|
14
14
|
platformdirs>=2.4.0;python_version<"3.7"
|
15
|
-
platformdirs>=3.
|
15
|
+
platformdirs>=3.9.1;python_version>="3.7"
|
16
16
|
parse>=1.19.1
|
17
17
|
parse-type>=0.6.2
|
18
18
|
six==1.16.0
|
@@ -30,7 +30,7 @@ pynose==1.4.6
|
|
30
30
|
sniffio==1.3.0;python_version>="3.7"
|
31
31
|
h11==0.14.0;python_version>="3.7"
|
32
32
|
outcome==1.2.0;python_version>="3.7"
|
33
|
-
trio==0.22.
|
33
|
+
trio==0.22.2;python_version>="3.7"
|
34
34
|
trio-websocket==0.10.3;python_version>="3.7"
|
35
35
|
wsproto==1.2.0;python_version>="3.7"
|
36
36
|
selenium==3.141.0;python_version<"3.7"
|
@@ -70,7 +70,7 @@ pygments==2.14.0;python_version<"3.7"
|
|
70
70
|
pygments==2.15.1;python_version>="3.7"
|
71
71
|
pyreadline3==3.4.1;platform_system=="Windows"
|
72
72
|
tabcompleter==1.2.1
|
73
|
-
pdbp==1.4.
|
73
|
+
pdbp==1.4.3
|
74
74
|
colorama==0.4.5;python_version<"3.7"
|
75
75
|
colorama==0.4.6;python_version>="3.7"
|
76
76
|
exceptiongroup==1.1.2;python_version>="3.7"
|
@@ -6,6 +6,7 @@ from seleniumbase import DriverContext # noqa
|
|
6
6
|
from seleniumbase import encryption # noqa
|
7
7
|
from seleniumbase import get_driver # noqa
|
8
8
|
from seleniumbase import js_utils # noqa
|
9
|
+
from seleniumbase import shared_utils # noqa
|
9
10
|
from seleniumbase import MasterQA # noqa
|
10
11
|
from seleniumbase import page_actions # noqa
|
11
12
|
from seleniumbase import page_utils # noqa
|
@@ -14,6 +14,7 @@ from seleniumbase.core.browser_launcher import get_driver # noqa
|
|
14
14
|
from seleniumbase.fixtures import js_utils # noqa
|
15
15
|
from seleniumbase.fixtures import page_actions # noqa
|
16
16
|
from seleniumbase.fixtures import page_utils # noqa
|
17
|
+
from seleniumbase.fixtures import shared_utils # noqa
|
17
18
|
from seleniumbase.fixtures.base_case import BaseCase # noqa
|
18
19
|
from seleniumbase.masterqa.master_qa import MasterQA # noqa
|
19
20
|
from seleniumbase.plugins.sb_manager import SB # noqa
|