ha4t.cdp.cdp module
CDP 类用于与 Chrome DevTools Protocol (CDP) 进行通信。它通过 WebSocket 连接到浏览器的调试端口,并发送 CDP 命令以控制浏览器。
该模块提供了与浏览器进行交互的功能,包括发送命令、接收响应、获取页面元素等。
使用示例:
创建 WS_CDP 实例:
`python cdp = CDP("ws://localhost:9222") `
输入page标题匹配连接:
`python page = cdp.get_page("homepage") `
使用 Page 类与浏览器窗口交互:
`python page.click(("css selector","#element_id")) `
获取元素并进行操作:
`python element = page.get_element(("css selector", "#element_id")) Element.click() `
截图:
`python img = page.screenshot("screenshot.png") `
- class Page(ws, wait_page_ready_timeout=30)[源代码]
基类:
object
- send(method, params=None, timeout=3)[源代码]
发送命令到浏览器并获取结果。
- 参数:
method -- CDP 方法名
params -- 方法参数,默认为 None
timeout -- 超时时间,默认为 3 秒
- 返回:
响应结果
- 抛出:
ValueError -- 如果超时
- Example:
>>> result = Page().send("Page.navigate", {"url": "https://www.example.com"})
- execute_script(script) Any [源代码]
执行 JavaScript 脚本并返回结果。
- 参数:
script -- 要执行的 JavaScript 脚本
- 返回:
执行结果
- Example:
>>> result = Page().execute_script("document.title;")
- get_element(locator: tuple, timeout=5) Element [源代码]
获取页面元素并返回 Element 实例。 :param locator: 元素定位器,格式为元组,例如 ("css selector", "#element_id") :param timeout: 超时时间,默认为配置中的 FIND_TIMEOUT :return: Element 实例 :raises ValueError: 如果元素定位失败 :Example:
>>> element = Page().get_element(("css selector", "#element_id"))
- exist(locator: tuple)[源代码]
判断元素是否存在。
- 参数:
locator -- 元素定位器
- 返回:
如果元素存在返回 True,否则返回 False
- Example:
>>> exists = Page().exist(("css selector", "#element_id"))
- wait(locator: tuple, timeout=5)[源代码]
等待元素出现。
- 参数:
locator -- 元素定位器
timeout -- 超时时间,默认为配置中的 FIND_TIMEOUT
- 抛出:
ValueError -- 如果超时
- Example:
>>> Page().wait(("css selector", "#element_id"))
- screenshot(path=None) <MagicMock name='mock.Image.Image' id='140002791260432'> [源代码]
截图并返回图像对象。
- 参数:
path -- 可选,保存截图的路径
- 返回:
PIL.Image.Image 对象
- Example:
>>> img = Page().screenshot("screenshot.png")
- click(locator: tuple, timeout=5)[源代码]
点击元素。
- 参数:
locator -- 元素定位器
timeout -- 超时时间,默认为配置中的 FIND_TIMEOUT
- Example:
>>> Page().click(("css selector", "#element_id"))
- class CDP(url='http://localhost:9222')[源代码]
基类:
object
- class Element(page: Page, element_id: str)[源代码]
基类:
object
- exists() bool [源代码]
判断元素是否存在。
- 返回:
如果元素存在返回 True,否则返回 False
- Example:
>>> is_exist = Element.exists()
- is_displayed() bool [源代码]
判断元素是否可见。
- 返回:
如果元素可见返回 True,否则返回 False
- Example:
>>> visible = Element.is_displayed()
- is_enabled() bool [源代码]
判断元素是否可用。
- 返回:
如果元素可用返回 True,否则返回 False
- Example:
>>> enabled = Element.is_enabled()
- wait_util_enabled(timeout=10)[源代码]
等待元素可用。
- 参数:
timeout -- 超时时间,默认为 10 秒
- 抛出:
ValueError -- 如果超时
- Example:
>>> Element.wait_util_enabled()
- is_selected() bool [源代码]
判断元素是否被选中。
- 返回:
如果元素被选中返回 True,否则返回 False
- Example:
>>> selected = Element.is_selected()
- get_attribute(attribute: str) Any [源代码]
获取元素属性。
- 参数:
attribute -- 属性名
- 返回:
属性值
- Example:
>>> value = Element.get_attribute("class")
- set_attribute(attribute: str, value: Any)[源代码]
设置元素属性。
- 参数:
attribute -- 属性名
value -- 属性值
- Example:
>>> Element.set_attribute("class", "new-class")
- get_property(prop: str) Any [源代码]
获取元素属性值。
- 参数:
prop -- 属性名
- 返回:
属性值
- Example:
>>> value = Element.get_property("value")