{"id":24321,"library":"pydoll-python","title":"Pydoll","description":"Pydoll is a library for automating Chromium-based browsers without a WebDriver, offering realistic interactions. It leverages Chrome DevTools Protocol (CDP) for direct browser control. Version 2.22.1 targets Python 3.10+.","status":"active","version":"2.22.1","language":"python","source_language":"en","source_url":"https://github.com/roniemartinez/pydoll","tags":["browser automation","chromium","cdp","async","no-webdriver"],"install":[{"cmd":"pip install pydoll-python","lang":"bash","label":"PyPI install"}],"dependencies":[{"reason":"Used for type hints in older Python versions","package":"typing_extensions","optional":false}],"imports":[{"note":"Browser is not directly exposed at package root in v2.x; use chromium submodule.","wrong":"from pydoll import Browser","symbol":"Browser","correct":"from pydoll.browser.chromium import ChromiumBrowser as Browser"},{"note":"Page is not exposed at package root; must import from pydoll.page.page.","wrong":"from pydoll import Page","symbol":"Page","correct":"from pydoll.page.page import Page"}],"quickstart":{"code":"import asyncio\nfrom pydoll.browser.chromium import ChromiumBrowser\n\nasync def main():\n    browser = ChromiumBrowser()\n    await browser.start()\n    page = await browser.get_page()\n    await page.go_to('https://example.com')\n    print(await page.get_source())\n    await browser.stop()\n\nasyncio.run(main())","lang":"python","description":"Launch Chromium, navigate to a page, and print the HTML source."},"warnings":[{"fix":"Wrap code in async functions and use await for browser/page methods.","message":"Pydoll v2.x uses async/await exclusively. Synchronous API has been removed. All interactions must be awaitable.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Always call await browser.start() after creating the Browser instance.","message":"Browser instance does not auto-launch; you must call await browser.start() explicitly before use.","severity":"gotcha","affected_versions":"all"},{"fix":"Use page.find_elements(...) instead of browser.find_elements(...).","message":"The method Browser.find_elements has been deprecated in favor of Page.find_elements for clarity.","severity":"deprecated","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install via 'pip install pydoll-python' (note the hyphen, not underscore).","cause":"Library not installed or installed with wrong name.","error":"ModuleNotFoundError: No module named 'pydoll'"},{"fix":"Use 'from pydoll.browser.chromium import ChromiumBrowser'.","cause":"Importing from wrong location; Browser is in submodule.","error":"AttributeError: module 'pydoll' has no attribute 'Browser'"},{"fix":"Ensure you are not mixing asyncio.run() with other event loops. Use await browser.start() properly.","cause":"Using asyncio.run() in some contexts or improper async handling.","error":"RuntimeError: Event loop is closed"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}