【Playwright系列】二、(3)playwright常用的功能

目录

        • 1. 元素定位
          • 1.1 CSS 选择器
          • 1.2 XPath
          • 1.3 文本选择器
          • 1.4 组合选择器
        • 2. 交互操作
          • 2.1 点击元素
          • 2.2 输入文本
          • 2.3 获取元素文本
          • 2.4 拖拽元素
        • 3. 等待机制
          • 3.1 自动等待
          • 3.2 显式等待
          • 3.3 等待导航完成
        • 4. 网络拦截
          • 4.1 拦截请求
          • 4.2 模拟 API 响应
        • 5. 文件上传与下载
          • 5.1 文件上传
          • 5.2 文件下载
        • 6. 截图与录屏
          • 6.1 截图
          • 6.2 录屏
        • 7. 浏览器上下文与多用户场景
          • 7.1 创建浏览器上下文
          • 7.2 模拟多用户
        • 8. 实践任务
          • 任务 1:元素定位与交互
          • 任务 2:等待机制
          • 任务 3:网络拦截
          • 任务 4:文件上传与下载
          • 任务 5:截图与录屏
          • 任务 6:多用户场景
        • 9. 总结

在第三阶段,我们将深入学习 Playwright 的核心功能,包括元素定位、交互操作、等待机制、网络拦截、文件操作、截图与录屏、浏览器上下文等。这些功能是编写高效、稳定自动化测试脚本的基础。


1. 元素定位

元素定位是自动化测试的核心,Playwright 提供了多种定位元素的方式。

1.1 CSS 选择器
  • 通过元素的标签名、类名、ID、属性等定位元素。
  • 示例:
    page.click("button")  # 通过标签名定位
    page.fill(".username", "testuser")  # 通过类名定位
    page.click("#submit-button")  # 通过 ID 定位
    page.click("[type='submit']")  # 通过属性定位
    
1.2 XPath
  • 通过 XPath 表达式定位元素。
  • 示例:
    page.click("//button[@id='submit']")  # 通过 XPath 定位
    
1.3 文本选择器
  • 通过元素的文本内容定位元素。
  • 示例:
    page.click("text='Login'")  # 通过文本内容定位
    page.click("text=/Log\s*in/i")  # 通过正则表达式匹配文本
    
1.4 组合选择器
  • 组合多个选择器定位元素。
  • 示例:
    page.click(".container >> text='Submit'")  # 组合 CSS 选择器和文本选择器
    

2. 交互操作

Playwright 提供了丰富的 API 来模拟用户操作。

2.1 点击元素
  • 使用 page.click(selector) 点击元素。
  • 示例:
    page.click("#submit-button")
    
2.2 输入文本
  • 使用 page.fill(selector, text) 在输入框中填写文本。
  • 示例:
    page.fill("#username", "testuser")
    
2.3 获取元素文本
  • 使用 page.text_content(selector) 获取元素的文本内容。
  • 示例:
    text = page.text_content(".welcome-message")
    print(text)
    
2.4 拖拽元素
  • 使用 page.drag_and_drop(source, target) 拖拽元素。
  • 示例:
    page.drag_and_drop("#source", "#target")
    

3. 等待机制

Playwright 提供了多种等待机制,确保元素加载完成后再进行操作。

3.1 自动等待
  • Playwright 会自动等待元素出现、可操作等。
  • 示例:
    page.click("#submit-button")  # 自动等待按钮可点击
    
3.2 显式等待
  • 使用 page.wait_for_selector(selector) 显式等待元素出现。
  • 示例:
    page.wait_for_selector(".welcome-message")
    
3.3 等待导航完成
  • 使用 page.goto(url, wait_until="load") 等待页面加载完成。
  • 示例:
    page.goto("https://example.com", wait_until="domcontentloaded")
    

4. 网络拦截

Playwright 允许拦截和修改网络请求,用于模拟不同的网络环境。

4.1 拦截请求
  • 使用 page.route(url, handler) 拦截请求。
  • 示例:
    def handle_route(route):
        if route.request.resource_type == "image":
            route.abort()  # 拦截图片请求
        else:
            route.continue_()
    
    page.route("**/*", handle_route)
    
4.2 模拟 API 响应
  • 使用 route.fulfill(status, body) 模拟 API 响应。
  • 示例:
    def handle_route(route):
        if route.request.url.endswith("/api/data"):
            route.fulfill(status=200, body='{"data": "mocked"}')
        else:
            route.continue_()
    
    page.route("**/*", handle_route)
    

5. 文件上传与下载

Playwright 支持文件上传和下载操作。

5.1 文件上传
  • 使用 page.set_input_files(selector, files) 上传文件。
  • 示例:
    page.set_input_files("#file-input", "path/to/file.txt")
    
5.2 文件下载
  • 使用 page.on("download", handler) 监听下载事件。
  • 示例:
    with page.expect_download() as download_info:
        page.click("#download-button")
    download = download_info.value
    print(download.path())
    

6. 截图与录屏

Playwright 支持截图和录屏功能,用于调试和记录测试过程。

6.1 截图
  • 使用 page.screenshot(path="screenshot.png") 截图。
  • 示例:
    page.screenshot(path="example.png")
    
6.2 录屏
  • 使用 browser.new_context(record_video_dir="videos/") 录屏。
  • 示例:
    context = browser.new_context(record_video_dir="videos/")
    page = context.new_page()
    page.goto("https://example.com")
    context.close()
    

7. 浏览器上下文与多用户场景

Playwright 支持浏览器上下文,用于模拟多用户场景。

7.1 创建浏览器上下文
  • 使用 browser.new_context() 创建浏览器上下文。
  • 示例:
    context = browser.new_context()
    page = context.new_page()
    
7.2 模拟多用户
  • 使用多个浏览器上下文模拟多用户。
  • 示例:
    context1 = browser.new_context()
    page1 = context1.new_page()
    page1.goto("https://example.com")
    
    context2 = browser.new_context()
    page2 = context2.new_page()
    page2.goto("https://example.com")
    

8. 实践任务
任务 1:元素定位与交互
  • 编写脚本,使用 CSS 选择器和 XPath 定位元素,并模拟点击、输入等操作。
任务 2:等待机制
  • 编写脚本,使用显式等待和自动等待机制,确保元素加载完成后再进行操作。
任务 3:网络拦截
  • 编写脚本,拦截网络请求并模拟 API 响应。
任务 4:文件上传与下载
  • 编写脚本,模拟文件上传和下载操作。
任务 5:截图与录屏
  • 编写脚本,截图和录屏记录测试过程。
任务 6:多用户场景
  • 编写脚本,使用浏览器上下文模拟多用户场景。

9. 总结

通过第三阶段的学习,你应该掌握了 Playwright 的核心功能,包括元素定位、交互操作、等待机制、网络拦截、文件操作、截图录屏以及浏览器上下文。以下是关键点总结:

  1. 元素定位: 使用 CSS 选择器、XPath、文本选择器等定位元素。
  2. 交互操作: 模拟点击、输入、拖拽等用户操作。
  3. 等待机制: 使用自动等待和显式等待确保元素加载完成。
  4. 网络拦截: 拦截和修改网络请求,模拟不同的网络环境。
  5. 文件操作: 实现文件上传和下载。
  6. 截图与录屏: 记录测试过程,方便调试和分析。
  7. 浏览器上下文: 模拟多用户场景。

通过掌握这些核心功能,你将能够编写高效、稳定的自动化测试脚本,适用于各种 Web 应用场景。

### 使用 Playwright 的录制功能 Playwright 提供了一种便捷的方式来记录用户的交互操作自动生成测试脚本。以下是关于如何使用 Playwright 录制功能以及相关配置的详细介绍。 #### 1. 安装 Playwright 和依赖项 为了使用 Playwright 的录制功能,首先需要安装 Playwright 及其同步 API 支持库。可以通过以下命令完成安装: ```bash pip install playwright playwright install ``` 这会安装 Playwright 庢及其支持的浏览器驱动程序[^1]。 #### 2. 启用录制模式 Playwright 的录制功能允许开发者通过简单的鼠标点击和键盘输入来生成自动化测试脚本。启用录制模式的关键在于设置 `headless` 参数为 `False` 结合调试工具观察页面行为。 下面是一个基本的例子展示如何启动录制环境: ```python from playwright.sync_api import sync_playwright def record_script(): with sync_playwright() as p: browser = p.chromium.launch(headless=False, slow_mo=50) # 设置 headless 为 False context = browser.new_context() page = context.new_page() # 打开目标网站 page.goto("https://example.com") # 用户在此处手动执行操作,例如填写表单、点击按钮等 input("按下 Enter 键结束录制...") # 输出当前页面的操作日志 print(page.evaluate("window.__PWRECORDER__.getCommands()")) # 获取录制的日志数据 context.close() browser.close() record_script() ``` 此代码片段展示了如何创建一个非无头模式 (non-headless mode) 浏览器实例以便于用户进行交互,利用 `slow_mo` 参数减慢动作速度以更好地控制录制过程[^2]。 #### 3. 自动生成脚本 当用户完成了所需的一系列操作之后,可以调用特定方法提取这些操作对应的代码逻辑。例如,在上面提到的示例中,我们打印出了由窗口对象存储的动作序列 (`__PWRECORDER__.getCommands()`)。 这些命令可以直接转换成可运行的 Python 脚本用于后续回放或者进一步修改优化。 需要注意的是实际项目里可能还需要处理更多细节比如异常捕获、等待加载状态等问题;此外也可以考虑集成 CI/CD 工具链实现持续交付流水线上的自动验证等功能扩展[^1]。 #### 4. 配置选项说明 除了基础参数外,还有其他一些重要的配置可以帮助改善体验效果: - **viewport size**: 控制模拟设备屏幕大小,默认值通常适用于大多数场景但如果遇到响应式布局调整则需指定具体数值; - **geolocation & permissions**: 如果应用涉及到地理位置服务请求权限授予等情况,则应在上下文中提前声明相应属性避免影响正常流程进展。 - **tracing options**: 开启追踪能够收集更详细的性能指标分析报告辅助定位潜在瓶颈所在位置提升整体表现水平等等。 --- ### 总结 综上所述,借助 Playwright 强大的录制能力不仅简化了复杂业务场景下手工编码的工作量同时也提高了结果可靠性保障产品质量稳定向前发展迈出坚实一步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值