跳转至

API 参考

这里是Pydoll API 参考!本节提供 Pydoll 库中所有类、方法和函数的详尽文档。

概述

Pydoll 几个关键模块组成,每个模块在浏览器自动化中都有特定的用途:

浏览器模块

浏览器模块可以管理浏览器实例和生命周期。

  • Chrome - Chrome 浏览器自动化
  • Edge - Microsoft Edge 浏览器自动化
  • Options - 浏览器配置选项
  • Tab - 页面标签和交互
  • Managers - 浏览器生命周期管理器

元素模块

元素模块提供与网页元素交互的功能。

连接模块

连接模块通过 Chrome DevTools 协议处理与浏览器的通信。

命令模块

命令模块提供低级 Chrome DevTools 协议命令实现。

协议模块

协议模块实现了 Chrome DevTools 协议命令和事件。

核心模块

核心模块包含基础程序、常量和异常。

快捷导航

常用类

功能 模块
Chrome Chrome浏览器自动化 pydoll.browser.chromium
Edge Edge浏览器自动化 pydoll.browser.chromium
Tab 标签页交互和控制 pydoll.browser.tab
WebElement 元素交互 pydoll.elements.web_element
ChromiumOptions 浏览器配置 pydoll.browser.options

关键枚举和常量

名称 功能 模块
By 元素选择器策略 pydoll.constants
Key 键盘按键常量 pydoll.constants
PermissionType 浏览器权限类型 pydoll.constants

常见异常类型

异常 原因 模块
ElementNotFound 元素在DOM未找到 pydoll.exceptions
WaitElementTimeout 元素等待超时 pydoll.exceptions
BrowserNotStarted 浏览器未开启 pydoll.exceptions

使用模式

基本浏览器自动化

from pydoll.browser.chromium import Chrome

async with Chrome() as browser:
    tab = await browser.start()
    await tab.go_to("https://example.com")
    element = await tab.find(id="my-element")
    await element.click()

元素定位

# Using the modern find() method
element = await tab.find(id="username")
element = await tab.find(tag_name="button", class_name="submit")

# Using CSS selectors or XPath
element = await tab.query("#username")
element = await tab.query("//button[@class='submit']")

事件处理

await tab.enable_page_events()
await tab.on('Page.loadEventFired', handle_page_load)

类型提示

Pydoll 具有完整的类型支持,并提供全面的类型提示,以提供更好的 IDE 支持和代码安全性。所有公共 API 均包含正确的类型注释。

from typing import Optional, List
from pydoll.elements.web_element import WebElement

# Methods return properly typed objects
element: Optional[WebElement] = await tab.find(id="test", raise_exc=False)
elements: List[WebElement] = await tab.find(class_name="item", find_all=True)

Async/Await 支持

所有 Pydoll 操作都是异步的,必须与 async/await 一起使用:

import asyncio

async def main():
    # All Pydoll operations are async
    async with Chrome() as browser:
        tab = await browser.start()
        await tab.go_to("https://example.com")

asyncio.run(main())

浏览以下部分以了解每个模块的完整 API 文档。