{"repo":"seleniumbase/SeleniumBase","free":true,"listed":false,"github":"https://github.com/seleniumbase/SeleniumBase","clone":"git clone https://github.com/seleniumbase/SeleniumBase.git","description":"📊 APIs for web automation, testing, and bypassing bot-detection.","language":"Python","stars":12929,"topics":["anti-detection","bot-detection","chromedriver","chromium","e2e-testing","end-to-end-testing","playwright","pytest","python","python-scraper","selenium","selenium-python","seleniumbase","test-automation","web-automation","web-scraping","webdriver","webscraping"],"license":"MIT","category":"web_automation","readme_excerpt":"<!-- SeleniumBase Docs -->\n\n<meta property=\"og:site_name\" content=\"SeleniumBase\">\n<meta property=\"og:title\" content=\"SeleniumBase: Stealthy Chromium Automation with Python; and E2E Testing.\" />\n<meta property=\"og:description\" content=\"Stealthy Chromium Automation, including fast, easy, and reliable Web/UI testing with Python.\" />\n<meta property=\"og:keywords\" content=\"Python, pytest, selenium, webdriver, testing, automation, seleniumbase, framework, dashboard, recorder, reports, screenshots, playwright, stealth, CAPTCHA\">\n<meta property=\"og:image\" content=\"https://seleniumbase.github.io/cdn/img/mac_sb_logo_5b.png\" />\n<link rel=\"icon\" href=\"https://seleniumbase.github.io/img/logo6.png\" />\n\n<p align=\"center\"><a href=\"https://github.com/seleniumbase/SeleniumBase/\"><img src=\"https://seleniumbase.github.io/cdn/img/super_logo_sb3.png\" alt=\"SeleniumBase\" title=\"SeleniumBase\" width=\"350\" /></a></p>\n\n<p align=\"center\" class=\"hero__title\"><b>All-in-one Browser Automation Framework:<br />Web Crawling / Testing / Scraping / Stealth</b></p>\n\n<p align=\"center\"><a href=\"https://pypi.python.org/pypi/seleniumbase\" target=\"_blank\"><img src=\"https://img.shields.io/pypi/v/seleniumbase.svg?color=3399EE\" alt=\"PyPI version\" /></a> <a href=\"https://pepy.tech/projects/seleniumbase?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=line&versions=*\" target=\"_blank\"><img src=\"https://static.pepy.tech/badge/seleniumbase\" alt=\"SeleniumBase PyPI downloads\" /></a> <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-22BBCC.svg\" title=\"SeleniumBase\" /></a> <a href=\"https://seleniumbase.io\"><img src=\"https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg\" alt=\"SeleniumBase Docs\" /></a> <a href=\"https://github.com/seleniumbase/SeleniumBase/actions\" target=\"_blank\"><img src=\"https://github.com/seleniumbase/SeleniumBase/workflows/Tests/badge.svg\" alt=\"SeleniumBase GitHub Actions\" /></a> <a href=\"https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m\"><img src=\"https://img.shields.io/badge/docs-📺-F12345.svg?style=flat&logo=YouTube&logoColor=white&label=YouTube\" alt=\"YouTube Channel\" /></a></p>\n\n<p align=\"center\">\n<a href=\"#python_installation\">🚀 Start</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md\">🏰 Features</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md\">🎛️ Options</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md\">📚 Examples</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md\">💻 Scripts</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md\">🗾 Locale</a>\n<br />\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md\">📗 API</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/cdp_mode_methods.md\">📘 Stealth API</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md\"> 🔠 DesignPatterns</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md\">🔴 Recorder</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md\">📊 Dashboard</a>\n<br />\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md\">🎖️ GUI</a> |\n<a href=\"https://seleniumbase.io/demo_page\">📰 TestPage</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md\">👤 UC Mode</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md\">🐙 CDP Mode</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md\">📶 Charts</a> |\n<a href=\"https://seleniumbase.io/devices/?url=seleniumbase.io\">🖥️ Farm</a>\n<br />\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md\">👁️ How</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium\">🚝 Migration</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md\">🎭 Stealthy Playwright</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md\">🛂 MasterQA</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md\">🚎 Tours</a>\n<br />\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md\">🤖 CI/CD</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md\">🟨 JSMgr</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md\">🌏 Translator</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md\">🎞️ Presenter</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md\">🖼️ Visual</a> |\n<a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md\">🗂️ CPlans</a>\n<br />\n</p>\n\n--------\n\n<ul>\n<li>🐙 <a translate=\"no\" href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md\"><b>CDP Mode</b></a> <b>bypasses bot-detection with Chromium-based browsers.</b></li>\n<li>🎭 <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md\"><b><span translate=\"no\">Stealthy Playwright Mode</span></b></a> <b>extends CDP Mode's stealth to Playwright.</b></li>\n</ul>\n<ul>\n<li><code><b>pip install seleniumbase</b></code> for the main framework. (Or use <code>uv add</code>)</li>\n<li><code><b>pip install playwright</b></code> for the optional integration. (Or use <code>uv add</code>)</li>\n</ul>\n\n--------\n\n<b>📝 Here's a Python example that uses <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp\">Pure CDP Mode</a> (<code>sb_cdp</code>):</b><br />(It navigates to Browserscan where it bypasses bot-detection.)\n\n```python\nfrom seleniumbase import sb_cdp\n\nsb = sb_cdp.Chrome()\nsb.goto(\"https://browserscan.net/bot-detection\")\nsb.sleep(3)\nsb.quit()\n```\n\n<p align=\"center\">\n<img src=\"https://seleniumbase.github.io/cdn/img/results_normal.jpg\" width=\"588\" alt=\"BrowserScan Test Results: Normal\" />\n<br /><em>(All BrowserScan bot-detection tests passed successfully.)</em>\n</p>\n\n<b>🎭 Here's an example script that uses <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md\"><span translate=\"no\">Stealthy Playwright Mode</span></a>:</b><br />(Playwright connects to a stealthy SeleniumBase browser session.)\n\n```python\nfrom playwright.sync_api import sync_playwright\nfrom seleniumbase import sb_cdp\n\nsb = sb_cdp.Chrome(guest=True)\nendpoint_url = sb.get_endpoint_url()\n\nwith sync_playwright() as p:\n    browser = p.chromium.connect_over_cdp(endpoint_url)\n    page = browser.contexts[0].pages[0]\n    page.goto(\"https://bot.sannysoft.com/\")\n    page.wait_for_timeout(500)\n```\n\n<p align=\"center\">\n<img src=\"https://seleniumbase.github.io/other/sannysoft_success.jpg\" width=\"470\" alt=\"All Sannysoft tests passed successfully\" />\n<br /><em>(All Sannysoft bot-detection tests passed successfully.)</em>\n</p>\n\n--------\n\n<p align=\"left\"><b>📝 <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_methods.py\" target=\"_blank\">This example</a> shows off multiple methods:</b></p>\n\n```python\nfrom seleniumbase import sb_cdp\n\nsb = sb_cdp.Chrome()\nsb.goto(\"https://seleniumbase.io/demo_page\")\nsb.type(\"input\", \"Quickly type text!\")\nsb.press_keys(\"textarea\", \"Slowly type text!\")\nsb.click(\"#myButton\")\nsb.set_value(\"input#mySlider\", \"100\")\nsb.click_visible_elements(\"input.checkBoxClassB\")\nsb.select_option_by_text(\"#mySelect\", \"Set to 75%\")\nsb.hover_and_click(\"#myDropdown\", \"#dropOption2\")\nsb.click(\"#checkBox1\")\nsb.drag_and_drop(\"img#logo\", \"div#drop2\")\nsb.nested_click(\"iframe#myFrame3\", \".fBox\")\nsb.highlight(\"#myButton\")\nsb.quit()\n```\n\n--------\n\n<p align=\"left\"><b>📝 <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_browserscan.py\" target=\"_blank\">This example</a> expands the Browserscan script into a test demo:</b><br />(Assertions added and elements highlighted with JavaScript.)</p>\n\n```python\nfrom seleniumbase import sb_cdp\n\nsb = sb_cdp.Chrome(locale=\"en\", ad_block=True)\nsb.goto(\"https://browserscan.net/bot-detection\")\nsb.flash(\"Test Results\", duration=1.5, pause=0.5)\nsb.assert_element('strong:contains(\"Normal\")')\nprint(\"Bot Not Detected\")\nsb.flash('strong:contains(\"Normal\")', pause=1)\nsb.quit()\n```\n\n--------\n\n<p align=\"left\"><b>📝 <a href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/raw_cdp_yc_news.py\" target=\"_blank\">This example</a> scrapes Hacker News listings:</b></p>\n\n```python\nfrom seleniumbase import sb_cdp\n\nsb = sb_cdp.Chrome()\nsb.goto(\"https://news.ycombinator.com/submitted?id=seleniumbase\")\nelements = sb.find_elements(\"span.titleline > a\")\nfor element in elements:\n    print(\"* \" + element.text)\n```\n\n--------\n\n🐙 Stealthy CDP Mode examples are located in [./examples/cdp_mode/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode).\n\n🎭 Stealthy Playwright examples are located in [./examples/cdp_mode/playwright/](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/).\n\n--------\n\n<h3 align=\"left\">⚙️ Stealthy architecture flowchart:</h3>\n\n<p align=\"center\">\n<img src=\"https://seleniumbase.github.io/other/sb_architecture.png\" width=\"646\" alt=\"Stealthy architecture flowchart\" />\n<br /><em>(For maximum stealth, use <a translate=\"no\" href=\"https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.","default_branch":"master","files":773,"tree":[".dockerignore",".github/FUNDING.yml",".github/Workflows.md",".github/workflows/pages.yml",".github/workflows/python-nightly-mac.yml",".github/workflows/python-nightly-ubuntu.yml",".github/workflows/python-nightly-windows.yml",".github/workflows/python-package.yml",".gitignore","CHANGELOG.md","CNAME","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Dockerfile","LICENSE","MANIFEST.in","README.md","SECURITY.md","_config.yml","azure-pipelines.yml","examples/ReadMe.md","examples/__init__.py","examples/basic_test.py","examples/behave_bdd/ReadMe.md","examples/behave_bdd/__init__.py","examples/behave_bdd/behave.ini","examples/behave_bdd/features/__init__.py","examples/behave_bdd/features/behave.ini","examples/behave_bdd/features/calculator.feature","examples/behave_bdd/features/environment.py","examples/behave_bdd/features/fail_page.feature","examples/behave_bdd/features/login_app.feature","examples/behave_bdd/features/realworld.feature","examples/behave_bdd/features/steps/__init__.py","examples/behave_bdd/features/steps/calculator.py","examples/behave_bdd/features/steps/fail_page.py","examples/behave_bdd/features/steps/imported.py","examples/behave_bdd/features/steps/swag_labs.py","examples/behave_bdd/features/swag_labs.feature","examples/boilerplates/ReadMe.md","examples/boilerplates/__init__.py","examples/boilerplates/base_test_case.py","examples/boilerplates/boilerplate_test.py","examples/boilerplates/classic_obj_test.py","examples/boilerplates/page_objects.py","examples/boilerplates/samples/__init__.py","examples/boilerplates/samples/file_parsing/__init__.py","examples/boilerplates/samples/file_parsing/parse_files.py","examples/boilerplates/samples/file_parsing/qa_login_example.txt","examples/boilerplates/samples/file_parsing/staging_login_example.txt","examples/boilerplates/samples/google_objects.py","examples/boilerplates/samples/google_test.py","examples/boilerplates/samples/sb_swag_test.py","examples/boilerplates/samples/swag_labs_test.py","examples/boilerplates/samples/test_page_objects.py","examples/boilerplates/sb_fixture_test.py","examples/capabilities/ReadMe.md","examples/capabilities/mac_cap_file.py","examples/capabilities/sample_cap_file_BS.py","examples/capabilities/sample_cap_file_BS.yml","examples/capabilities/sample_cap_file_SL.py","examples/capabilities/selenoid_cap_file.py","examples/capabilities/win10_cap_file.py","examples/case_plans/basic_test.MyTestClass.test_basics.md","examples/case_plans/my_first_test.MyTestClass.test_swag_labs.md","examples/case_plans/shadow_root_test.ShadowRootTest.test_shadow_root.md","examples/case_plans/test_assert_elements.ListAssertTests.test_assert_list_of_elements.md","examples/case_plans/test_calculator.CalculatorTests.test_6_times_7_plus_12_equals_54.md","examples/case_plans/test_demo_site.DemoSiteTests.test_demo_site.md","examples/case_plans/test_login.SwagLabsLoginTests.test_swag_labs_login.md","examples/case_plans/test_mfa_login.TestMFALogin.test_mfa_login.md","examples/case_summary.md","examples/cdp_mode/ReadMe.md","examples/cdp_mode/__init__.py","examples/cdp_mode/playwright/ReadMe.md","examples/cdp_mode/playwright/__init__.py","examples/cdp_mode/playwright/raw_basic_async.py","examples/cdp_mode/playwright/raw_basic_nested.py","examples/cdp_mode/playwright/raw_basic_sync.py","examples/cdp_mode/playwright/raw_bing_cap_async.py","examples/cdp_mode/playwright/raw_bing_cap_nested.py","examples/cdp_mode/playwright/raw_bing_cap_sync.py","examples/cdp_mode/playwright/raw_browserscan_nested.py","examples/cdp_mode/playwright/raw_browserscan_sync.py","examples/cdp_mode/playwright/raw_cf_cap_sync.py","examples/cdp_mode/playwright/raw_clearcote_sync.py","examples/cdp_mode/playwright/raw_etsy_sync.py","examples/cdp_mode/playwright/raw_fingerprint_nested.py","examples/cdp_mode/playwright/raw_fingerprint_sync.py","examples/cdp_mode/playwright/raw_footlocker_sync.py","examples/cdp_mode/playwright/raw_gas_info_async.py","examples/cdp_mode/playwright/raw_gas_info_sync.py","examples/cdp_mode/playwright/raw_gitlab_async.py","examples/cdp_mode/playwright/raw_gitlab_nested.py","examples/cdp_mode/playwright/raw_gitlab_sync.py","examples/cdp_mode/playwright/raw_google_sync.py","examples/cdp_mode/playwright/raw_idealista_nested.py","examples/cdp_mode/playwright/raw_indeed_sync.py","examples/cdp_mode/playwright/raw_nike_sync.py","examples/cdp_mode/playwright/raw_nordstrom_sync.py","examples/cdp_mode/playwright/raw_pixelscan_async.py","examples/cdp_mode/playwright/raw_pixelscan_sync.py","examples/cdp_mode/playwright/raw_planetmc_sync.py","examples/cdp_mode/playwright/raw_reddit_sync.py","examples/cdp_mode/playwright/raw_sannysoft_nested.py","examples/cdp_mode/playwright/raw_sannysoft_sync.py","examples/cdp_mode/playwright/raw_seatgeek_sync.py","examples/cdp_mode/playwright/raw_walmart_sync.py","examples/cdp_mode/playwright/raw_yc_news_async.py","examples/cdp_mode/playwright/raw_yc_news_sync.py","examples/cdp_mode/raw_ad_blocking.py","examples/cdp_mode/raw_ahrefs.py","examples/cdp_mode/raw_albertsons.py","examples/cdp_mode/raw_amazon.py","examples/cdp_mode/raw_antibot.py","examples/cdp_mode/raw_async.py","examples/cdp_mode/raw_basic_async.py","examples/cdp_mode/raw_basic_cdp.py","examples/cdp_mode/raw_basic_mobile.py","examples/cdp_mode/raw_bestwestern.py","examples/cdp_mode/raw_browserscan.py","examples/cdp_mode/raw_canvas.py","examples/cdp_mode/raw_cdp.py","examples/cdp_mode/raw_cdp_browserscan.py","examples/cdp_mode/raw_cdp_clearcote.py","examples/cdp_mode/raw_cdp_downloads.py","examples/cdp_mode/raw_cdp_drivers.py","examples/cdp_mode/raw_cdp_etsy.py","examples/cdp_mode/raw_cdp_extended.py","examples/cdp_mode/raw_cdp_facebook.py","examples/cdp_mode/raw_cdp_fingerprint.py","examples/cdp_mode/raw_cdp_gitlab.py","examples/cdp_mode/raw_cdp_hyatt.py","examples/cdp_mode/raw_cdp_immoscout.py","examples/cdp_mode/raw_cdp_login.py","examples/cdp_mode/raw_cdp_methods.py","examples/cdp_mode/raw_cdp_mobile.py","examples/cdp_mode/raw_cdp_nike.py","examples/cdp_mode/raw_cdp_nordstrom.py","examples/cdp_mode/raw_cdp_patent.py","examples/cdp_mode/raw_cdp_pixelscan.py","examples/cdp_mode/raw_cdp_recaptcha.py","examples/cdp_mode/raw_cdp_reddit.py","examples/cdp_mode/raw_cdp_sannysoft.py","examples/cdp_mode/raw_cdp_shadow.py","examples/cdp_mode/raw_cdp_tabs.py","examples/cdp_mode/raw_cdp_target.py","examples/cdp_mode/raw_cdp_timezone.py","examples/cdp_mode/raw_cdp_turnstile.py","examples/cdp_mode/raw_cdp_walmart.py","examples/cdp_mode/raw_cdp_with_sb.py","examples/cdp_mode/raw_cdp_xpath.py","examples/cdp_mode/raw_cdp_yc_news.py","examples/cdp_mode/raw_cdp_zillow.py","examples/cdp_mode/raw_cf.py","examples/cdp_mode/raw_cf_captcha.py","examples/cdp_mode/raw_cf_clearance.py","examples/cdp_mode/raw_chatgpt.py","examples/cdp_mode/raw_consecutive_c.py","examples/cdp_mode/raw_cookies_async.py","examples/cdp_mode/raw_demo_site.py","examples/cdp_mode/raw_drag_and_drop.py","examples/cdp_mode/raw_driver.py","examples/cdp_mode/raw_easyjet.py","examples/cdp_mode/raw_elal.py","examples/cdp_mode/raw_facebook.py","examples/cdp_mode/raw_fingerprint.py","examples/cdp_mode/raw_footlocker.py","examples/cdp_mode/raw_form_turnstile.py","examples/cdp_mode/raw_gas_records.py","examples/cdp_mode/raw_geolocation.py","examples/cdp_mode/raw_geolocation_sb.py","examples/cdp_mode/raw_gettyimages.py","examples/cdp_mode/raw_gitlab.py","examples/cdp_mode/raw_glassdoor.py","examples/cdp_mode/raw_hacker_news.py","examples/cdp_mode/raw_handle_alerts.py","examples/cdp_mode/raw_hilton.py","examples/cdp_mode/raw_homedepot.py","examples/cdp_mode/raw_hyatt.py","examples/cdp_mode/raw_idealista.py","examples/cdp_mode/raw_indeed.py","examples/cdp_mode/raw_indeed_jobs.py","examples/cdp_mode/raw_iphey.py","examples/cdp_mode/raw_kohls.py","examples/cdp_mode/raw_lesfurets.py","examples/cdp_mode/raw_linkedin.py","examples/cdp_mode/raw_mfa_login.py","examples/cdp_mode/raw_mobile_agents.py","examples/cdp_mode/raw_mobile_async.py","examples/cdp_mode/raw_mobile_gitlab.py","examples/cdp_mode/raw_mobile_roblox.py","examples/cdp_mode/raw_mouser.py","examples/cdp_mode/raw_multi_async.py","examples/cdp_mode/raw_multi_c_async.py","examples/cdp_mode/raw_multi_captcha.py","examples/cdp_mode/raw_multi_cdp.py","examples/cdp_mode/raw_muse.py","examples/cdp_mode/raw_muse_async.py","examples/cdp_mode/raw_mycdp_cookies.py","examples/cdp_mode/raw_nevada_search.py","examples/cdp_mode/raw_nike.py","examples/cdp_mode/raw_nordstrom.py","examples/cdp_mode/raw_patent.py","examples/cdp_mode/raw_pixelscan.py","examples/cdp_mode/raw_planetmc.py","examples/cdp_mode/raw_pokemon.py","examples/cdp_mode/raw_priceline.py","examples/cdp_mode/raw_print_to_pdf.py","examples/cdp_mode/raw_proxy.py","examples/cdp_mode/raw_publication.py","examples/cdp_mode/raw_radwell.py","examples/cdp_mode/raw_ralphlauren.py","examples/cdp_mode/raw_reddit.py","examples/cdp_mode/raw_reddit_async.py","examples/cdp_mode/raw_req_async.py","examples/cdp_mode/raw_req_mod.py","examples/cdp_mode/raw_req_sb.py","examples/cdp_mode/raw_res_nike.py","examples/cdp_mode/raw_res_sb.py","examples/cdp_mode/raw_reuse_browser.py","examples/cdp_mode/raw_sannysoft.py","examples/cdp_mode/raw_science.py","examples/cdp_mode/raw_seatgeek.py","examples/cdp_mode/raw_sms_man.py","examples/cdp_mode/raw_socialblade.py","examples/cdp_mode/raw_softpedia.py","examples/cdp_mode/raw_southwest.py","examples/cdp_mode/raw_stopandshop.py","examples/cdp_mode/raw_tab_switching.py","examples/cdp_mode/raw_target.py","examples/cdp_mode/raw_theaters.py","examples/cdp_mode/raw_tiktok.py","examples/cdp_mode/raw_timezone.py","examples/cdp_mode/raw_timezone_sb.py","examples/cdp_mode/raw_totalwine.py","examples/cdp_mode/raw_trails.py","examples/cdp_mode/raw_turnstile.py","examples/cdp_mode/raw_united.py","examples/cdp_mode/raw_walmart.py","examples/cdp_mode/raw_wsform.py","examples/cdp_mode/raw_xhr_async.py","examples/cdp_mode/raw_xhr_sb.py","examples/cdp_mode/raw_xpath.py","examples/cdp_mode/raw_zoro.py","examples/chart_maker/ReadMe.md","examples/chart_maker/chart_presentation.py","examples/chart_maker/my_chart.py","examples/chart_maker/pie_charts.py","examples/chart_maker/test_area_chart.py","examples/chart_maker/test_display_chart.py","examples/chart_maker/test_line_chart.py","examples/chart_maker/test_multi_series.py","examples/chart_maker/test_save_chart.py","examples/coffee_cart_tests.py","examples/custom_settings.py","examples/desktop_apps/ReadMe.md","examples/desktop_apps/recorder.py","examples/dialog_boxes/ReadMe.md","examples/dialog_boxes/dialog_box_tour.py","examples/edge_test.py","examples/example_config.cfg","examples/example_logs/ReadMe.md","examples/example_logs/basic_test_info.txt","examples/example_logs/page_source.html","examples/example_logs/screenshot.png","examples/github_test.py","examples/gui_test_runner.py","examples/hack_the_planet.py","examples/handle_alert_test.py","examples/iframe_tests.py","examples/locale_code_test.py","examples/master_qa/ReadMe.md","examples/master_qa/__init__.py","examples/master_qa/basic_masterqa_test_0.py","examples/master_qa/masterqa_test_1.py","examples/master_qa/pytest.ini","examples/migration/__init__.py","examples/migration/protractor/ReadMe.md","examples/migration/protractor/__init__.py","examples/migration/protractor/example_spec.js","examples/migration/protractor/example_test.py","examples/migration/protractor/input_spec.js","examples/migration/protractor/input_test.py","examples/migration/protractor/mat_paginator_spec.js","examples/migration/protractor/mat_paginator_test.py","examples/migration/raw_selenium/ReadMe.md","examples/migration/raw_selenium/__init__.py","examples/migration/raw_selenium/flaky_messy_raw.py","examples/migration/raw_selenium/long_messy_raw.py","examples/migration/raw_selenium/messy_raw.py","examples/migration/raw_selenium/pytest.ini","examples/migration/raw_selenium/refined_raw.py","examples/migration/raw_selenium/simple_sbase.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/ReadMe.md","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/__init__.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/ReadMe.md","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/__init__.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/raw_hybrid_script.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/raw_script_pw.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/raw_script_sb.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/non_test_scripts/raw_script_se.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_case_pw.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_case_pw_with_tracing.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_case_sb.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_case_se.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_hybrid_case.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_hybrid_fixture.py","examples/migration/raw_selenium/to_playwright/01_hybrid_approach/raw_hybrid_fixture_tracing.py","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/ReadMe.md","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/__init__.py","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/raw_pw_adapter.py","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/raw_pw_adapter_with_tracing.py","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/raw_sb_adapter.py","examples/migration/raw_selenium/to_playwright/02_adapter_pattern/raw_se_adapter.py","examples/migration/raw_selenium/to_playwright/ReadMe.md","examples/migration/raw_selenium/to_playwright/__init__.py","examples/multiple_cdp_drivers.py","examples/my_first_test.py","examples/nth_child_test.py","examples/offline_examples/__init__.py","examples/offline_examples/demo_page.html","examples/offline_examples/load_html_test.py","examples/offline_examples/test_demo_page.py","examples/offline_examples/test_extended_driver.py","examples/offline_examples/test_handle_alerts.py","examples/offline_examples/test_request_fixture.py","examples/offline_examples/test_user_agent.py","examples/old_wordle_script.py","examples/parameterized_test.py","examples/performance_test.py","examples/presenter/ReadMe.md","examples/presenter/core_presentation.py","examples/presenter/edge_presentation.py","examples/presenter/fundamentals.py","examples/presenter/hacking_with_cdp.py","examples/presenter/multi_uc.py","examples/presenter/my_presentation.py","examples/presenter/py_virtual_envs.py","examples/presenter/ua_presentation_5.py","examples/presenter/uc_presentation.py","examples/presenter/uc_presentation_3.py","examples/presenter/uc_presentation_4.py","examples/presenter/web_scraping_on_gha.py","examples/proxy_test.py","examples/pytest.ini","examples/rate_limiting_test.py","examples/raw_ahrefs.py","examples/raw_antibot_login.py","examples/raw_bing_captcha.py","examples/raw_block.py","examples/raw_brotector_captcha.py","examples/raw_call.py","examples/raw_cdp_drivers.py","examples/raw_cdp_logging.py","examples/raw_cf.py","examples/raw_cookies.py","examples/raw_detection.py","examples/raw_driver_context.py","examples/raw_driver_manager.py","examples/raw_file_call.py","examples/raw_form_turnstile.py","examples/raw_games.py","examples/raw_gitlab.py","examples/raw_google.py","examples/raw_gui_click.py","examples/raw_hobbit.py","examples/raw_invisible_captcha.py","examples/raw_login_context.py","examples/raw_login_driver.py","examples/raw_login_sb.py","examples/raw_main_call.py","examples/raw_mobile.py","examples/raw_multi_drivers.py","examples/raw_multi_sb.py","examples/raw_no_context_mgr.py","examples/raw_order_tickets.py","examples/raw_parameter_script.py","examples/raw_performance_logs.py","examples/raw_pixelscan.py","examples/raw_pyautogui.py","examples/raw_robot.py","examples/raw_sb.py","examples/raw_test_scripts.py","examples/raw_turnstile.py","examples/raw_uc_driver.py","examples/raw_uc_events.py","examples/raw_uc_mode.py","examples/sb_fixture_tests.py","examples/setup.cfg","examples/shadow_root_test.py","examples/swag_labs_user_tests.py","examples/test_3d_apis.py","examples/test_apple_site.py","examples/test_assert_elements.py","examples/test_calculator.py","examples/test_canvas.py","examples/test_cdp_ad_blocking.py","examples/test_checkboxes.py","examples/test_chinese_pdf.py"],"storefront":"/r/seleniumbase","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/seleniumbase/SeleniumBase/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}