seleniumbase 4.28.1__tar.gz → 4.28.3__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.28.1 → seleniumbase-4.28.3}/PKG-INFO +2 -2
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/requirements.txt +1 -1
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/browser_launcher.py +24 -20
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/page_actions.py +27 -3
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/__init__.py +12 -8
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/PKG-INFO +2 -2
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/requires.txt +1 -1
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/setup.py +1 -1
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/Workflows.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/workflows/pages.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/workflows/python-nightly-mac.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/workflows/python-nightly-ubuntu.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/workflows/python-nightly-windows.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.github/workflows/python-package.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/.gitignore +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/CHANGELOG.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/CNAME +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/CODE_OF_CONDUCT.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/CONTRIBUTING.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/Dockerfile +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/LICENSE +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/MANIFEST.in +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/README.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/SECURITY.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/_config.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/azure-pipelines.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/basic_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/behave.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/behave.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/calculator.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/environment.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/fail_page.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/realworld.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/calculator.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/fail_page.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/imported.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/swag_labs.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/base_test_case.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/boilerplate_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/classic_obj_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/page_objects.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/file_parsing/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/file_parsing/parse_files.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/file_parsing/qa_login_example.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/file_parsing/staging_login_example.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/google_objects.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/google_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/sb_swag_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/swag_labs_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/test_page_objects.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/sb_fixture_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/mac_cap_file.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/sample_cap_file_BS.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/sample_cap_file_SL.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/selenoid_cap_file.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/capabilities/win10_cap_file.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/basic_test.MyTestClass.test_basics.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/case_summary.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/chart_presentation.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/my_chart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/pie_charts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/test_area_chart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/test_display_chart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/test_line_chart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/test_multi_series.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/chart_maker/test_save_chart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/coffee_cart_tests.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/custom_settings.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/desktop_apps/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/desktop_apps/recorder.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/dialog_boxes/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/dialog_boxes/dialog_box_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/edge_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/example_config.cfg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/example_logs/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/example_logs/basic_test_info.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/example_logs/page_source.html +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/example_logs/screenshot.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/github_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/gui_test_runner.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/hack_the_planet.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/handle_alert_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/iframe_tests.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/locale_code_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/master_qa/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/master_qa/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/master_qa/basic_masterqa_test_0.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/master_qa/masterqa_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/master_qa/pytest.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/example_spec.js +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/example_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/input_spec.js +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/input_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/mat_paginator_spec.js +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/mat_paginator_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/flaky_messy_raw.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/long_messy_raw.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/messy_raw.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/pytest.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/refined_raw.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/simple_sbase.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/my_first_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/nth_child_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/demo_page.html +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/load_html_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/test_demo_page.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/test_handle_alerts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/test_request_fixture.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/offline_examples/test_user_agent.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/old_wordle_script.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/parameterized_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/performance_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/core_presentation.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/edge_presentation.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/fundamentals.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/my_presentation.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/presenter/py_virtual_envs.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/proxy_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/pytest.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/rate_limiting_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_call.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_driver_context.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_file_call.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_main_call.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_parameter_script.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_sb.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_test_scripts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/raw_uc_mode.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/setup.cfg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/shadow_root_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/swag_labs_user_tests.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_apple_site.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_assert_elements.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_calculator.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_canvas.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_checkboxes.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_chinese_pdf.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_chromedriver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_coffee_cart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_console_logging.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_contains_selector.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_cycle_elements.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_decryption.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_deferred_asserts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_demo_site.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_detect_404s.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_docs_site.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_double_click.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_download_files.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_download_images.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_drag_and_drop.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_error_page.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_event_firing.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_fail.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_geolocation.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_get_coffee.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_get_locale_code.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_get_pdf_text.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_get_user_agent.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_hack_search.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_image_saving.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_inspect_html.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_login.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_markers.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_mfa_login.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_multiple_drivers.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_null.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_override_driver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_override_sb_fixture.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_parse_soup.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_pdf_asserts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_pytest_parametrize.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_repeat_tests.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_request_sb_fixture.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_save_screenshots.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_sb_fixture.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_scrape_bing.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_select_options.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_shadow_dom.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_show_file_choosers.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_skype_site.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_suite.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_swag_labs.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_tinymce.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_todomvc.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_url_asserts.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_usefixtures.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_verify_chromedriver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_window_switching.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_xfail.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/test_xkcd.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/time_limit_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/bootstrap_google_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/bootstrap_xkcd_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/driverjs_maps_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/google_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/hopscotch_google_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/introjs_google_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/maps_introjs_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/octocat_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/shepherd_google_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/tour_examples/xkcd_tour.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/chinese_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/dutch_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/english_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/french_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/italian_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/japanese_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/korean_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/portuguese_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/pytest.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/russian_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/translations/spanish_test_1.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/uc_cdp_events.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/unit_tests/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/unit_tests/verify_framework.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/upgrade_chromedriver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/upload_file_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/user_agent_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/verify_undetected.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/layout_test.VisualLayoutTests.test_applitools_layout_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/python_home_test.VisualLayoutTests.test_python_home_layout_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_applitools_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/test_layout_fail.VisualLayoutFailureTests.test_xkcd_logo_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/test_layout_fail.VisualLayout_FixtureTests.test_python_home_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/case_plans/xkcd_visual_test.VisualLayoutTests.test_xkcd_layout_change.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/layout_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/python_home_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/test_layout_fail.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/visual_testing/xkcd_visual_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/wordle_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/xpath_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/youtube_search_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/behave_gui.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/case_plans.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/chinese.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/commander.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/customizing_test_runs.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/demo_mode.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/desired_capabilities.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/features_list.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/handling_iframes.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/happy_customers.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/hidden_files_info.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/how_it_works.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/html_inspector.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/install.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/install_python_pip_git.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/js_package_manager.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/locale_codes.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/method_summary.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/mobile_testing.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/mysql_installation.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/recorder_mode.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/shadow_dom.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/syntax_formats.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/thank_you.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/translations.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/useful_grep_commands.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/using_safari_driver.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/verify_webdriver.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/virtualenv_instructions.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/help_docs/webdriver_installation.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/install.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/azure/azure_pipelines/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/azure/jenkins/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/behave.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/behave.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/calculator.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/environment.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/fail_page.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/realworld.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/steps/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/steps/calculator.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/steps/fail_page.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/steps/real_world.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/steps/swag_labs.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/behave/features/swag_labs.feature +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/brython/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/brython/index.html +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/brython/index.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/brython/library.html +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/docker/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/docker/docker-entrypoint.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/docker/run_docker_test_in_chrome.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/github/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/github/workflows/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/github/workflows/extras.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/google_cloud/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/katalon/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/linux/Linuxfile.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/linux/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/linux/Xvfb_launcher.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/linux/jenkins_permissions.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/linux/tomcat_permissions.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/index.html +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/my_first_test.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/npm-shrinkwrap.json +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/package.json +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/server.js +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/node_js/test_demo_site.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/integrations/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs.yml +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/ReadMe.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/docs_instructions.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/dash_pie.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/dash_pie_2.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/dash_pie_3.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/favicon.ico +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/grad_logo.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/green_icon.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/green_logo.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/green_logo2.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/green_logo3.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo3.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo3a.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo3b.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo3c.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo4.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo5.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo6.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/logo7.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/sb_icon.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/sb_logo_10.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/sb_logo_7.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/side_by_side.png +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/social/share_facebook.svg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/social/share_github.svg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/social/share_gitter.svg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/social/share_instagram.svg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/img/social/share_twitter.svg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/index.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/prepare.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/mkdocs_build/requirements.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/pytest.ini +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/sbase/ReadMe.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/sbase/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/sbase/__main__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/sbase/steps.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/drivers/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/base_case.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/masterqa/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/resources/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/resources/favicon.ico +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_ide/ReadMe.md +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/setup.cfg +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/virtualenv_install.sh +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/win_install.bat +0 -0
- {seleniumbase-4.28.1 → seleniumbase-4.28.3}/win_virtualenv.bat +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.28.
|
3
|
+
Version: 4.28.3
|
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
|
@@ -124,7 +124,7 @@ Requires-Dist: pygments==2.17.2; python_version < "3.8"
|
|
124
124
|
Requires-Dist: pygments==2.18.0; python_version >= "3.8"
|
125
125
|
Requires-Dist: pyreadline3==3.4.1; platform_system == "Windows"
|
126
126
|
Requires-Dist: tabcompleter==1.3.0
|
127
|
-
Requires-Dist: pdbp==1.5.
|
127
|
+
Requires-Dist: pdbp==1.5.1
|
128
128
|
Requires-Dist: colorama==0.4.6
|
129
129
|
Requires-Dist: pyotp==2.9.0
|
130
130
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
@@ -64,7 +64,7 @@ pygments==2.17.2;python_version<"3.8"
|
|
64
64
|
pygments==2.18.0;python_version>="3.8"
|
65
65
|
pyreadline3==3.4.1;platform_system=="Windows"
|
66
66
|
tabcompleter==1.3.0
|
67
|
-
pdbp==1.5.
|
67
|
+
pdbp==1.5.1
|
68
68
|
colorama==0.4.6
|
69
69
|
pyotp==2.9.0
|
70
70
|
python-xlib==0.33;platform_system=="Linux"
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.28.
|
2
|
+
__version__ = "4.28.3"
|
@@ -389,7 +389,9 @@ def uc_special_open_if_cf(
|
|
389
389
|
driver.execute_script('window.open("%s","_blank");' % url)
|
390
390
|
driver.close()
|
391
391
|
if mobile_emulator:
|
392
|
-
|
392
|
+
page_actions.switch_to_window(
|
393
|
+
driver, driver.window_handles[-1], 2
|
394
|
+
)
|
393
395
|
uc_metrics = {}
|
394
396
|
if (
|
395
397
|
isinstance(device_width, int)
|
@@ -419,7 +421,9 @@ def uc_special_open_if_cf(
|
|
419
421
|
except Exception:
|
420
422
|
pass
|
421
423
|
if not mobile_emulator:
|
422
|
-
|
424
|
+
page_actions.switch_to_window(
|
425
|
+
driver, driver.window_handles[-1], 2
|
426
|
+
)
|
423
427
|
else:
|
424
428
|
driver.default_get(url) # The original one
|
425
429
|
else:
|
@@ -450,7 +454,7 @@ def uc_open_with_tab(driver, url):
|
|
450
454
|
with driver:
|
451
455
|
driver.execute_script('window.open("%s","_blank");' % url)
|
452
456
|
driver.close()
|
453
|
-
|
457
|
+
page_actions.switch_to_window(driver, driver.window_handles[-1], 2)
|
454
458
|
else:
|
455
459
|
driver.default_get(url) # The original one
|
456
460
|
return None
|
@@ -476,10 +480,14 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
|
|
476
480
|
driver.reconnect(reconnect_time)
|
477
481
|
time.sleep(0.004)
|
478
482
|
try:
|
479
|
-
|
483
|
+
page_actions.switch_to_window(
|
484
|
+
driver, driver.window_handles[-1], 2
|
485
|
+
)
|
480
486
|
except InvalidSessionIdException:
|
481
487
|
time.sleep(0.05)
|
482
|
-
|
488
|
+
page_actions.switch_to_window(
|
489
|
+
driver, driver.window_handles[-1], 2
|
490
|
+
)
|
483
491
|
else:
|
484
492
|
driver.default_get(url) # The original one
|
485
493
|
return None
|
@@ -546,17 +554,17 @@ def uc_click(
|
|
546
554
|
driver.reconnect(reconnect_time)
|
547
555
|
|
548
556
|
|
549
|
-
def verify_pyautogui_has_a_headed_browser():
|
557
|
+
def verify_pyautogui_has_a_headed_browser(driver):
|
550
558
|
"""PyAutoGUI requires a headed browser so that it can
|
551
559
|
focus on the correct element when performing actions."""
|
552
|
-
if
|
560
|
+
if hasattr(driver, "_is_hidden") and driver._is_hidden:
|
553
561
|
raise Exception(
|
554
562
|
"PyAutoGUI can't be used in headless mode!"
|
555
563
|
)
|
556
564
|
|
557
565
|
|
558
|
-
def install_pyautogui_if_missing():
|
559
|
-
verify_pyautogui_has_a_headed_browser()
|
566
|
+
def install_pyautogui_if_missing(driver):
|
567
|
+
verify_pyautogui_has_a_headed_browser(driver)
|
560
568
|
pip_find_lock = fasteners.InterProcessLock(
|
561
569
|
constants.PipInstall.FINDLOCK
|
562
570
|
)
|
@@ -608,7 +616,7 @@ def get_configured_pyautogui(pyautogui_copy):
|
|
608
616
|
|
609
617
|
|
610
618
|
def uc_gui_press_key(driver, key):
|
611
|
-
install_pyautogui_if_missing()
|
619
|
+
install_pyautogui_if_missing(driver)
|
612
620
|
import pyautogui
|
613
621
|
pyautogui = get_configured_pyautogui(pyautogui)
|
614
622
|
gui_lock = fasteners.InterProcessLock(
|
@@ -619,7 +627,7 @@ def uc_gui_press_key(driver, key):
|
|
619
627
|
|
620
628
|
|
621
629
|
def uc_gui_press_keys(driver, keys):
|
622
|
-
install_pyautogui_if_missing()
|
630
|
+
install_pyautogui_if_missing(driver)
|
623
631
|
import pyautogui
|
624
632
|
pyautogui = get_configured_pyautogui(pyautogui)
|
625
633
|
gui_lock = fasteners.InterProcessLock(
|
@@ -631,7 +639,7 @@ def uc_gui_press_keys(driver, keys):
|
|
631
639
|
|
632
640
|
|
633
641
|
def uc_gui_write(driver, text):
|
634
|
-
install_pyautogui_if_missing()
|
642
|
+
install_pyautogui_if_missing(driver)
|
635
643
|
import pyautogui
|
636
644
|
pyautogui = get_configured_pyautogui(pyautogui)
|
637
645
|
gui_lock = fasteners.InterProcessLock(
|
@@ -648,7 +656,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
|
|
648
656
|
and 'aria-label="Cloudflare"' not in source
|
649
657
|
):
|
650
658
|
return
|
651
|
-
install_pyautogui_if_missing()
|
659
|
+
install_pyautogui_if_missing(driver)
|
652
660
|
import pyautogui
|
653
661
|
pyautogui = get_configured_pyautogui(pyautogui)
|
654
662
|
gui_lock = fasteners.InterProcessLock(
|
@@ -664,9 +672,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
|
|
664
672
|
if not is_in_frame:
|
665
673
|
# Make sure the window is on top
|
666
674
|
page_actions.switch_to_window(
|
667
|
-
driver,
|
668
|
-
driver.current_window_handle,
|
669
|
-
timeout=settings.SMALL_TIMEOUT,
|
675
|
+
driver, driver.current_window_handle, 2, uc_lock=False
|
670
676
|
)
|
671
677
|
if not is_in_frame or needs_switch:
|
672
678
|
# Currently not in frame (or nested frame outside CF one)
|
@@ -1634,10 +1640,6 @@ def get_driver(
|
|
1634
1640
|
if headless2 and browser_name == constants.Browser.FIREFOX:
|
1635
1641
|
headless2 = False # Only for Chromium
|
1636
1642
|
headless = True
|
1637
|
-
if not hasattr(sb_config, "headless"):
|
1638
|
-
sb_config.headless = headless
|
1639
|
-
if not hasattr(sb_config, "headless2"):
|
1640
|
-
sb_config.headless2 = headless2
|
1641
1643
|
if (
|
1642
1644
|
binary_location
|
1643
1645
|
and isinstance(binary_location, str)
|
@@ -4035,6 +4037,8 @@ def get_local_driver(
|
|
4035
4037
|
driver, *args, **kwargs
|
4036
4038
|
)
|
4037
4039
|
)
|
4040
|
+
driver._is_hidden = (headless or headless2)
|
4041
|
+
driver._is_using_uc = True
|
4038
4042
|
if mobile_emulator:
|
4039
4043
|
uc_metrics = {}
|
4040
4044
|
if (
|
@@ -18,6 +18,7 @@ By.TAG_NAME # "tag name"
|
|
18
18
|
By.PARTIAL_LINK_TEXT # "partial link text"
|
19
19
|
"""
|
20
20
|
import codecs
|
21
|
+
import fasteners
|
21
22
|
import os
|
22
23
|
import time
|
23
24
|
from selenium.common.exceptions import ElementNotInteractableException
|
@@ -32,6 +33,7 @@ from selenium.webdriver.common.keys import Keys
|
|
32
33
|
from seleniumbase.common.exceptions import LinkTextNotFoundException
|
33
34
|
from seleniumbase.common.exceptions import TextNotVisibleException
|
34
35
|
from seleniumbase.config import settings
|
36
|
+
from seleniumbase.fixtures import constants
|
35
37
|
from seleniumbase.fixtures import page_utils
|
36
38
|
from seleniumbase.fixtures import shared_utils
|
37
39
|
|
@@ -1428,7 +1430,28 @@ def switch_to_frame(driver, frame, timeout=settings.SMALL_TIMEOUT):
|
|
1428
1430
|
timeout_exception(Exception, message)
|
1429
1431
|
|
1430
1432
|
|
1431
|
-
def
|
1433
|
+
def __switch_to_window(driver, window_handle, uc_lock=True):
|
1434
|
+
if (
|
1435
|
+
hasattr(driver, "_is_using_uc")
|
1436
|
+
and driver._is_using_uc
|
1437
|
+
and uc_lock
|
1438
|
+
):
|
1439
|
+
gui_lock = fasteners.InterProcessLock(
|
1440
|
+
constants.MultiBrowser.PYAUTOGUILOCK
|
1441
|
+
)
|
1442
|
+
with gui_lock:
|
1443
|
+
driver.switch_to.window(window_handle)
|
1444
|
+
else:
|
1445
|
+
driver.switch_to.window(window_handle)
|
1446
|
+
return True
|
1447
|
+
|
1448
|
+
|
1449
|
+
def switch_to_window(
|
1450
|
+
driver,
|
1451
|
+
window,
|
1452
|
+
timeout=settings.SMALL_TIMEOUT,
|
1453
|
+
uc_lock=True,
|
1454
|
+
):
|
1432
1455
|
"""
|
1433
1456
|
Wait for a window to appear, and switch to it. This should be usable
|
1434
1457
|
as a drop-in replacement for driver.switch_to.window().
|
@@ -1436,6 +1459,7 @@ def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
|
|
1436
1459
|
driver - the webdriver object (required)
|
1437
1460
|
window - the window index or window handle
|
1438
1461
|
timeout - the time to wait for the window in seconds
|
1462
|
+
uc_lock - if UC Mode and True, switch_to_window() uses thread-locking
|
1439
1463
|
"""
|
1440
1464
|
if window == -1:
|
1441
1465
|
window = len(driver.window_handles) - 1
|
@@ -1451,7 +1475,7 @@ def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
|
|
1451
1475
|
shared_utils.check_if_time_limit_exceeded()
|
1452
1476
|
try:
|
1453
1477
|
window_handle = driver.window_handles[window]
|
1454
|
-
driver
|
1478
|
+
__switch_to_window(driver, window_handle, uc_lock=uc_lock)
|
1455
1479
|
return True
|
1456
1480
|
except IndexError:
|
1457
1481
|
now_ms = time.time() * 1000.0
|
@@ -1472,7 +1496,7 @@ def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
|
|
1472
1496
|
for x in range(int(timeout * 10)):
|
1473
1497
|
shared_utils.check_if_time_limit_exceeded()
|
1474
1498
|
try:
|
1475
|
-
driver
|
1499
|
+
__switch_to_window(driver, window_handle, uc_lock=uc_lock)
|
1476
1500
|
return True
|
1477
1501
|
except NoSuchWindowException:
|
1478
1502
|
now_ms = time.time() * 1000.0
|
@@ -278,15 +278,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
278
278
|
options.binary_location, *options.arguments
|
279
279
|
)
|
280
280
|
else:
|
281
|
-
|
282
|
-
|
283
|
-
stdin=subprocess.PIPE,
|
284
|
-
stdout=subprocess.PIPE,
|
285
|
-
stderr=subprocess.PIPE,
|
286
|
-
close_fds=IS_POSIX,
|
287
|
-
creationflags=creationflags,
|
281
|
+
gui_lock = fasteners.InterProcessLock(
|
282
|
+
constants.MultiBrowser.PYAUTOGUILOCK
|
288
283
|
)
|
289
|
-
|
284
|
+
with gui_lock:
|
285
|
+
browser = subprocess.Popen(
|
286
|
+
[options.binary_location, *options.arguments],
|
287
|
+
stdin=subprocess.PIPE,
|
288
|
+
stdout=subprocess.PIPE,
|
289
|
+
stderr=subprocess.PIPE,
|
290
|
+
close_fds=IS_POSIX,
|
291
|
+
creationflags=creationflags,
|
292
|
+
)
|
293
|
+
self.browser_pid = browser.pid
|
290
294
|
service_ = None
|
291
295
|
log_output = subprocess.PIPE
|
292
296
|
if sys.version_info < (3, 8):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.28.
|
3
|
+
Version: 4.28.3
|
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
|
@@ -124,7 +124,7 @@ Requires-Dist: pygments==2.17.2; python_version < "3.8"
|
|
124
124
|
Requires-Dist: pygments==2.18.0; python_version >= "3.8"
|
125
125
|
Requires-Dist: pyreadline3==3.4.1; platform_system == "Windows"
|
126
126
|
Requires-Dist: tabcompleter==1.3.0
|
127
|
-
Requires-Dist: pdbp==1.5.
|
127
|
+
Requires-Dist: pdbp==1.5.1
|
128
128
|
Requires-Dist: colorama==0.4.6
|
129
129
|
Requires-Dist: pyotp==2.9.0
|
130
130
|
Requires-Dist: python-xlib==0.33; platform_system == "Linux"
|
@@ -212,7 +212,7 @@ setup(
|
|
212
212
|
'pygments==2.18.0;python_version>="3.8"',
|
213
213
|
'pyreadline3==3.4.1;platform_system=="Windows"',
|
214
214
|
"tabcompleter==1.3.0",
|
215
|
-
"pdbp==1.5.
|
215
|
+
"pdbp==1.5.1",
|
216
216
|
'colorama==0.4.6',
|
217
217
|
'pyotp==2.9.0',
|
218
218
|
'python-xlib==0.33;platform_system=="Linux"',
|
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.28.1 → seleniumbase-4.28.3}/examples/behave_bdd/features/steps/calculator.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/file_parsing/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/boilerplates/samples/test_page_objects.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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
|
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.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/mat_paginator_spec.js
RENAMED
File without changes
|
{seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/protractor/mat_paginator_test.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/flaky_messy_raw.py
RENAMED
File without changes
|
{seleniumbase-4.28.1 → seleniumbase-4.28.3}/examples/migration/raw_selenium/long_messy_raw.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|