Playwright 是一个用于自动化测试和网页操作的工具,它由 Microsoft 开发并开源。使用 Playwright,您可以编写代码来模拟用户与网页的交互,进行自动化测试,或者执行一系列网页操作。Playwright 支持多种编程语言,如 JavaScript、Python、和 C#,并提供了丰富的 API,可以用于控制浏览器的行为,例如打开页面、填写表单、点击按钮等等。Playwright 还支持多种浏览器,包括 Chromium、Firefox 和 WebKit。通过 Playwright,您可以轻松地编写可靠的自动化测试,以及进行各种网页操作。

在 Playwright for Python 中,`Page` 类常用的方法和属性包括:

### 方法(Methods):
- `add_init_script(script, **kwargs)`: 添加一个初始化脚本,将在每次新页面加载时执行。
- `add_locator_handler(name, script=None, handler=None)`: 添加一个定位器处理程序,允许使用自定义定位器。
- `add_script_tag(url=None, path=None, content=None)`: 向页面添加一个 script 标签,可以是 URL、文件路径或者直接提供脚本内容。
- `add_style_tag(url=None, path=None, content=None)`: 向页面添加一个 style 标签,可以是 URL、文件路径或者直接提供样式内容。
- `bring_to_front()`: 将页面置于前台。
- `close()`: 关闭页面。
- `content()`: 返回页面的 HTML 内容。
- `drag_and_drop(source, target)`: 拖拽元素从源位置到目标位置。
- `emulate_media(media=None, **kwargs)`: 模拟媒体类型。
- `evaluate(page_function, *args, force_expr=False)`: 在页面上下文中执行 JavaScript 函数,并返回结果。
- `evaluate_handle(page_function, *args, force_expr=False)`: 在页面上下文中执行 JavaScript 函数,并返回 JSHandle 对象。
- `expect_console_message(text=None, predicate=None, timeout=None)`: 期待控制台消息。
- `expect_download(**kwargs)`: 期待下载。
- `expect_event(event, predicate=None, timeout=None)`: 期待事件。
- `expect_file_chooser(predicate=None, timeout=None)`: 期待文件选择器。
- `expect_popup(**kwargs)`: 期待弹出窗口。
- `expect_request(url=None, predicate=None, timeout=None)`: 期待请求。
- `expect_request_finished(url=None, predicate=None, timeout=None)`: 期待请求完成。
- `expect_response(url=None, predicate=None, timeout=None)`: 期待响应。
- `expect_websocket(url=None, predicate=None, timeout=None)`: 期待 WebSocket 连接。
- `expect_worker(url=None, predicate=None, timeout=None)`: 期待工作线程。
- `expose_binding(name, callback)`: 公开绑定。
- `expose_function(name, callback)`: 公开函数。
- `frame(url=None, name=None)`: 返回新的 Frame 实例。
- `frame_locator(selector)`: 使用选择器返回新的 Frame 实例。
- `get_by_alt_text(text)`: 根据 alt 文本查找元素。
- `get_by_label(text)`: 根据标签文本查找元素。
- `get_by_placeholder(text)`: 根据占位符文本查找元素。
- `get_by_role(role)`: 根据角色查找元素。
- `get_by_test_id(id)`: 根据测试 ID 查找元素。
- `get_by_text(text)`: 根据文本内容查找元素。
- `get_by_title(text)`: 根据标题文本查找元素。

- `go_back()`: 后退。
- `go_forward()`: 前进。
- `goto(url, **kwargs)`: 导航到指定的 URL。
- `locator(selector)`: 返回新的 Locator 实例。
- `opener()`: 返回新的 Page 实例,表示打开当前页面的页面。
- `pause(timeout)`: 暂停执行。
- `pdf(**kwargs)`: 生成 PDF。
- `reload(**kwargs)`: 重新加载页面。
- `route(url, handler)`: 拦截并路由给定 URL 的请求。
- `route_from_har(entries)`: 使用 HAR(HTTP 归档文件格式)中的条目设置路由规则。
- `screenshot(**kwargs)`: 截图。
- `set_content(html, **kwargs)`: 设置页面内容。
- `set_default_navigation_timeout(timeout)`: 设置默认的导航超时时间。
- `set_default_timeout(timeout)`: 设置默认的超时时间。
- `set_extra_http_headers(headers)`: 设置额外的 HTTP 标头。
- `set_viewport_size(width, height)`: 设置视口大小。
- `title()`: 返回页面标题。
- `unroute(url=None)`: 取消拦截指定 URL 的请求。
- `unroute_all()`: 取消所有请求的拦截。
- `wait_for_event(event, predicate=None, timeout=None)`: 等待事件。
- `wait_for_function(page_function, *args, timeout=None, force_expr=False, polling=None)`: 等待函数执行。
- `wait_for_load_state(state=None, timeout=None)`: 等待页面加载状态。
- `wait_for_url(url, timeout=None)`: 等待 URL 更改。

### 属性(Properties):
- `context`: 返回页面的执行上下文。
- `frames`: 返回所有子帧的列表。
- `is_closed`: 返回页面是否已关闭。
- `keyboard`: 返回键盘实例。
- `main_frame`: 返回主帧。
- `mouse`: 返回鼠标实例。
- `request`: 返回请求对象。
- `touchscreen`: 返回触摸屏实例。
- `url`: 返回当前页面的 URL。
- `video`: 返回页面的视频对象。
- `viewport_size`: 返回视口大小。
- `workers`: 返回所有工作者的列表。

通过使用这些方法和属性,可以对页面进行各种操作和查询,以实现自动化测试或者其他 Web 应用程序的交互。

---------------

Playwright的主要类和模块,它们提供了丰富的功能来处理各种Web自动化测试场景:

  • APIRequest: 处理API请求的类。
  • APIRequestContext: API请求上下文。
  • APIResponse: API响应对象。
  • Accessibility: 提供对页面无障碍功能的访问和操作。
  • Browser: 浏览器对象,用于控制浏览器实例。
  • BrowserContext: 浏览器上下文,用于控制浏览器环境。
  • BrowserType: 浏览器类型,用于创建浏览器实例。
  • CDPSession: Chrome DevTools Protocol (CDP) 会话。
  • ConsoleMessage: 控制台消息。
  • Dialog: 对话框。
  • Download: 下载对象。
  • ElementHandle: 页面元素句柄。
  • Error: 错误对象。
  • FileChooser: 文件选择器。
  • Frame: 页面框架。
  • FrameLocator: 框架定位器。
  • JSHandle: JavaScript句柄。
  • Keyboard: 键盘操作。
  • Locator: 元素定位器。
  • Mouse: 鼠标操作。
  • Page: 页面对象。
  • Request: 请求对象。
  • Response: 响应对象。
  • Route: 路由对象,用于拦截和修改请求。
  • Selectors: 选择器,用于查找页面元素。
  • TimeoutError: 超时错误。
  • Touchscreen: 触摸屏操作。
  • Tracing: 跟踪测试执行。
  • Video: 视频录制对象。
  • WebError: Web错误。
  • WebSocket: WebSocket连接。
  • Worker: Web Worker对象。
  • Assertions: 断言模块,用于验证测试结果。
  • APIResponseAssertions: API响应断言。
  • LocatorAssertions: 元素定位器断言。
  • PageAssertions: 页面断言。

-------------------------

Locator是Playwright自动等待和重试功能的核心部分。
简而言之,定位器表示在页面上找到元素的方法。可以使用page.locator()方法创建一个定位器

**方法(Methods):**
- all: 查找所有匹配的元素。
- all_inner_texts: 获取所有匹配元素的内部文本。
- all_text_contents: 获取所有匹配元素的文本内容。
- and_: 逻辑与操作。
- blur: 触发元素的失焦事件。
- bounding_box: 获取元素的边界框。
- check: 选中复选框或单选按钮。
- clear: 清空输入框中的文本。
- click: 单击元素。
- count: 计算匹配元素的数量。
- dblclick: 双击元素。
- dispatch_event: 分发自定义事件到元素。
- drag_to: 将元素拖拽到另一个位置。
- evaluate: 在页面上下文中执行JavaScript代码。
- evaluate_all: 在页面上下文中执行JavaScript代码,并返回所有匹配元素的结果。
- evaluate_handle: 在页面上下文中执行JavaScript代码,并返回句柄。

- fill: 在输入框中输入文本。
- filter: 根据条件过滤匹配的元素。
- focus: 让元素获取焦点。
- frame_locator: 获取框架内的元素定位器。
- get_attribute: 获取元素的属性值。
- get_by_alt_text: 根据alt文本获取元素。
- get_by_label: 根据标签获取元素。
- get_by_placeholder: 根据占位符获取元素。
- get_by_role: 根据角色获取元素。
- get_by_test_id: 根据测试ID获取元素。
- get_by_text: 根据文本获取元素。
- get_by_title: 根据标题获取元素。
- highlight: 高亮元素。
- hover: 悬停在元素上。
- inner_html: 获取元素的内部HTML。
- inner_text: 获取元素的内部文本。

- input_value: 获取输入框中的值。
- is_checked: 检查元素是否被选中。
- is_disabled: 检查元素是否被禁用。
- is_editable: 检查元素是否可编辑。
- is_enabled: 检查元素是否可用。
- is_hidden: 检查元素是否隐藏。
- is_visible: 检查元素是否可见。
- locator: 创建元素的子定位器。
- nth: 获取匹配元素集合中的第n个元素。
- or_: 逻辑或操作。
- press: 模拟按键按下事件。
- press_sequentially: 按顺序按下一系列按键。
- screenshot: 截取元素的屏幕截图。
- scroll_into_view_if_needed: 滚动元素到可见区域。
- select_option: 选择下拉列表中的选项。
- select_text: 选择文本。
- set_checked: 设置复选框或单选按钮的选中状态。
- set_input_files: 设置文件输入框中的文件。
- tap: 点击元素。
- text_content: 获取元素的文本内容。
- uncheck: 取消选中复选框或单选按钮。
- wait_for: 等待元素出现。

**属性(Properties):**
- first: 获取匹配元素集合中的第一个元素。
- last: 获取匹配元素集合中的最后一个元素。
- page: 获取元素所属的页面对象。

------------------------------------
BrowserContext 提供了一种操作多个独立浏览器会话的方式。

下面是对每个方法和属性的简要介绍:

---方法---

1. **add_cookies**: 向当前浏览器上下文添加 cookie。

2. **add_init_script**: 向每个新创建的页面添加初始化脚本。

3. **clear_cookies**: 清除当前浏览器上下文的所有 cookie。

4. **clear_permissions**: 清除当前浏览器上下文的所有权限设置。

5. **close**: 关闭当前浏览器上下文,结束所有页面会话。

6. **cookies**: 获取当前浏览器上下文中的所有 cookie。

7. **expect_console_message**: 期望捕获控制台输出的消息。

8. **expect_event**: 期望捕获指定事件。

9. **expect_page**: 期望创建新页面并返回其上下文。

10. **expose_binding**: 将 JavaScript 函数绑定到页面中的 window 对象,以供页面中的 JavaScript 调用。

11. **expose_function**: 在浏览器上下文中公开 Node.js 函数,以供页面中的 JavaScript 调用。

12. **grant_permissions**: 授予指定的权限给当前浏览器上下文。

13. **new_cdp_session**: 创建一个新的 Chrome DevTools Protocol (CDP) 会话。

14. **new_page**: 创建一个新的页面会话并返回其上下文。

15. **route**: 设置路由,用于拦截和修改网络请求。

16. **route_from_har**: 根据 HAR 文件中的请求模式设置路由。

17. **set_default_navigation_timeout**: 设置默认的页面导航超时时间。

18. **set_default_timeout**: 设置默认的等待超时时间。

19. **set_extra_http_headers**: 设置额外的 HTTP 请求头。

20. **set_geolocation**: 设置页面的地理位置。

21. **set_offline**: 设置页面的离线状态。

22. **storage_state**: 获取当前浏览器上下文的存储状态。

23. **unroute**: 取消路由,停止拦截和修改指定的路由。

24. **unroute_all**: 取消所有路由,停止拦截和修改所有路由。

25. **wait_for_event**: 等待直到指定事件发生。

---属性---

1. **background_pages**: 获取当前浏览器上下文中的后台页面。

2. **browser**: 获取当前浏览器上下文所属的浏览器实例。

3. **pages**: 获取当前浏览器上下文中的所有页面。

4. **request**: 获取当前浏览器上下文的网络请求实例。

5. **service_workers**: 获取当前浏览器上下文中的服务工作线程。

6. **tracing**: 获取当前浏览器上下文的跟踪实例。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐