当前位置:   article > 正文

playwright基础教程_playwright教程

playwright教程

playwright

介绍

Playwright是一个由Microsoft开发的自动化测试工具,可以用来测试Web应用程序。它支持多种编程语言和多个浏览器,包括Chrome,Firefox和WebKit。它通过提供一组API,使得开发人员可以在浏览器中模拟用户行为,例如单击,输入文本和导航到不同的页面,同时还能捕捉截图和视频。

Playwright的主要特点包括:

  1. 跨浏览器支持:Playwright支持多个浏览器,包括Chrome,Firefox和WebKit。这意味着开发人员可以在不同的浏览器中执行自动化测试,而无需更改测试代码。

  2. 多语言支持:Playwright支持多种编程语言,包括JavaScript,TypeScript,Python和Java。这使得开发人员可以使用他们喜欢的语言来编写自动化测试。

  3. 内置的等待机制:Playwright有一个内置的等待机制,它可以自动等待页面加载,网络请求和元素可见性。这使得开发人员可以编写更稳定的测试,而无需手动添加等待时间。

  4. 截图和视频记录:Playwright可以捕捉屏幕截图和视频记录。这对于调试测试失败的情况非常有用,可以帮助开发人员更快地发现问题。

  5. 执行速度快:Playwright是建立在Chrome DevTools协议之上的,它可以利用Chrome DevTools协议的功能,

Playwright可以用于各种浏览器自动化场景,包括测试、爬虫、数据挖掘和自动化任务。它提供了对浏览器的完全控制,包括浏览器的页面和网络层面,允许开发人员更加精细地控制和模拟用户操作和交互。在测试领域,Playwright的特点是快速、可靠和可扩展,支持多浏览器执行和并行执行,可以大大提高测试效率。

除了基本的浏览器操作,Playwright还提供了一些高阶用法,包括:

  1. 视频录制:可以录制浏览器的屏幕操作,以视频的形式保存。

  2. 时间线跟踪:可以记录浏览器的每个网络请求和DOM事件,并以时间线的形式展示。

  3. 全局并行执行:可以同时执行多个浏览器实例,加快测试执行速度。

  4. 自定义浏览器实例:可以定制化浏览器实例的启动配置,以满足测试需求。

基础用法

在输入框中输入文本

可以使用fill()方法在输入框中输入文本。例如:

await page.fill('input[name="username"]', 'testuser')

此代码会在名为“username”的输入框中输入“testuser”文本。

点击页面元素

可以使用click()方法单击页面上的元素。例如:

await page.click('button[id="submit"]')

此代码将单击页面上ID为“submit”的按钮。

选择下拉列表中的选项

可以使用selectOption()方法从下拉列表中选择选项。例如:

await page.selectOption('select[name="country"]', 'USA')

此代码将从名称为“country”的下拉列表中选择“USA”选项。

模拟键盘输入

可以使用keyboard对象模拟键盘输入。例如:

await page.keyboard.type('hello')

此代码将在当前焦点元素中输入“hello”文本。

模拟鼠标操作

可以使用mouse对象模拟鼠标操作。例如:

await page.mouse.click(100100)

此代码将在屏幕上x坐标为100,y坐标为100的位置单击鼠标。

使用Playwright进行页面交互

使用Playwright可以方便地进行页面交互,只需要以下几个步骤:

  • 创建一个浏览器对象:from playwright.sync_api import Playwright, sync_playwright_with_timeout; browser_type = sync_playwright_with_timeout().start().chromium; browser = browser_type.launch(headless=True)

  • 创建一个页面对象:page = browser.new_page()

  • 进入一个页面:page.goto('https://www.example.com')

  • 点击一个元素:page.click('#element-id')

  • 输入文本:page.type('#input-id', 'text')

  • 暂停执行:page.pause()

  • 关闭浏览器:browser.close()

实战示列

以下是一些简单的 Playwright 的 Demo 教程:

1、打开浏览器

  1. from playwright.sync_api import Playwright, sync_playwright_with_timeout
  2. with sync_playwright_with_timeout() as playwright:
  3.     browser = playwright.chromium.launch(headless=False)
  4.     page = browser.new_page()
  5.     page.goto("https://www.google.com")
  6.     print(page.title())
  7.     browser.close()

这个例子演示了如何打开 Chromium 浏览器并打开 Google 首页。headless=False 参数表示以可见的方式启动浏览器。

2、搜索关键词

  1. from playwright.sync_api import Playwright, sync_playwright_with_timeout
  2. with sync_playwright_with_timeout() as playwright:
  3.     browser = playwright.chromium.launch(headless=False)
  4.     page = browser.new_page()
  5.     page.goto("https://www.google.com")
  6.     page.fill('input[name="q"]'"Python Playwright")
  7.     page.press('input[name="q"]'"Enter")
  8.     results = page.wait_for_selector("#search")
  9.     print(results.text_content())
  10.     browser.close()

这个例子演示了如何搜索关键词,并获取搜索结果。page.fill() 和 page.press() 方法用于在搜索框中输入和提交关键词,page.wait_for_selector() 方法用于等待搜索结果页面加载完毕并返回结果元素。results.text_content() 返回搜索结果的文本内容。

3、截屏

  1. from playwright.sync_api import Playwright, sync_playwright_with_timeout
  2. with sync_playwright_with_timeout() as playwright:
  3.     browser = playwright.chromium.launch(headless=False)
  4.     page = browser.new_page()
  5.     page.goto("https://www.google.com")
  6.     page.screenshot(path="google.png")
  7.     browser.close()

这个例子演示了如何对打开的页面进行截屏,page.screenshot() 方法用于对页面进行截屏并保存到指定路径下。

这些是 Playwright 的一些简单的 Demo 教程,可以帮助你了解 Playwright 的基本用法。更多高级用法可以参考 Playwright 的官方文档:https://playwright.dev/docs/

4、 多页面跳转

这个 Demo 展示了如何在多个页面之间进行导航,比如在登录后跳转到另一个页面。

  1. import asyncio
  2. from playwright.async_api import Playwright, async_playwright
  3. async def navigate_to_another_page(playwright: Playwright):
  4.     # 启动浏览器
  5.     browser = await playwright.chromium.launch(headless=False)
  6.     page = await browser.new_page()
  7.     # 打开第一个页面
  8.     await page.goto('https://example.com')
  9.     # 在第一个页面上点击链接
  10.     await page.click('a')
  11.     # 等待页面加载完成
  12.     await page.wait_for_selector('#second-page')
  13.     # 获取新页面
  14.     pages = await browser.pages()
  15.     new_page = pages[-1]
  16.     # 在新页面上执行操作
  17.     await new_page.fill('#username''John Doe')
  18.     await new_page.fill('#password''password')
  19.     await new_page.click('#login')
  20.     # 关闭浏览器
  21.     await browser.close()
  22. async with async_playwright() as playwright:
  23.     asyncio.run(navigate_to_another_page(playwright))

4、文件上传

这个 Demo 展示了如何在 Playwright 中模拟文件上传,比如在表单中上传文件。

  1. import asyncio
  2. from pathlib import Path
  3. from playwright.async_api import Playwright, async_playwright
  4. async def upload_file(playwright: Playwright):
  5.     # 启动浏览器
  6.     browser = await playwright.chromium.launch(headless=False)
  7.     page = await browser.new_page()
  8.     # 打开上传页面
  9.     await page.goto('https://example.com/upload')
  10.     # 选择文件并上传
  11.     file_path = Path('/path/to/file')
  12.     input_element = await page.query_selector('input[type=file]')
  13.     await input_element.set_input_files(str(file_path))
  14.     await page.click('input[type=submit]')
  15.     # 等待页面加载完成
  16.     await page.wait_for_selector('#upload-success')
  17.     # 关闭浏览器
  18.     await browser.close()
  19. async with async_playwright() as playwright:
  20.     asyncio.run(upload_file(playwright))

5、模拟移动设备

这个 Demo 展示了如何在 Playwright 中模拟移动设备,比如在手机浏览器上运行测试。

  1. import asyncio
  2. from playwright.async_api import Playwright, async_playwright
  3. async def simulate_mobile_device(playwright: Playwright):
  4.     # 启动浏览器
  5.     browser = await playwright.chromium.launch(headless=False)
  6.     context = await browser.new_context(
  7.         **playwright.devices['iPhone 11 Pro'],
  8.         viewport=playwright.devices['iPhone 11 Pro']['viewport']
  9.     )
  10.     page = await context.new_page()
  11.     # 在手机浏览器上打开页面
  12.     await page.goto('https://example.com')
  13.     # 在手机浏览器上执行操作
  14.     await page.fill('#username''John Doe')
  15.     await page.fill('#password''password')
  16.     await page.click('#login')
  17.     # 关闭浏览器
  18.     await browser.close()
  19. async with async_playwright() as playwright:
  20.     asyncio.run(simulate_mobile_device(playwright))

6、自动化截图

使用Playwright可以很方便地进行自动化截图,只需要以下几个步骤:

  • 安装Playwright:pip install playwright

  • 创建一个浏览器对象:from playwright.sync_api import Playwright, sync_playwright_with_timeout; browser_type = sync_playwright_with_timeout().start().chromium; browser = browser_type.launch(headless=True)

  • 创建一个页面对象:page = browser.new_page()

  • 进入一个页面:page.goto('https://www.example.com')

  • 截取整个页面:page.screenshot(path='example.png')

  • 关闭浏览器:browser.close()

完整代码示例:

  1. from playwright.sync_api import Playwright, sync_playwright_with_timeout
  2. # 启动浏览器
  3. browser_type = sync_playwright_with_timeout().start().chromium
  4. browser = browser_type.launch(headless=True)
  5. # 创建页面对象
  6. page = browser.new_page()
  7. # 进入页面并截图
  8. page.goto('https://www.example.com')
  9. page.screenshot(path='example.png')
  10. # 关闭浏览器
  11. browser.close()

7、使用Playwright进行表单填写和提交

使用Playwright可以方便地进行表单填写和提交,只需要以下几个步骤:

  • 创建一个浏览器对象:from playwright.sync_api import Playwright, sync_playwright_with_timeout; browser_type = sync_playwright_with_timeout().start().chromium; browser = browser_type.launch(headless=True)

  • 创建一个页面对象:page = browser.new_page()

  • 进入一个页面:page.goto('https://www.example.com')

  • 填写表单:page.fill('#username', 'myusername')

  • 提交表单:page.click('button[type="submit"]')

  • 关闭浏览器:browser.close()

完整代码示例:

  1. from playwright.sync_api import Playwright, sync_playwright_with_timeout
  2. # 启动浏览器
  3. browser_type = sync_playwright_with_timeout().start().chromium
  4. browser = browser_type.launch(headless=True)
  5. # 创建页面对象
  6. page = browser.new_page()
  7. # 进入页面并填写表单
  8. page.goto('https://www.example.com')
  9. page.fill('#username''myusername')
  10. # 提交表单
  11. page.click('button[type="submit"]')
  12. # 关闭浏览器
  13. browser.close()

补充总结

1、使用 Playwright 的录制功能来自动生成测试脚本。

Playwright 提供了一个录制工具,可以在浏览器中执行一些操作并自动生成测试脚本,这样可以大大减少编写测试脚本的时间和工作量。具体使用方法可以参考 Playwright 官方文档。

2、使用 Playwright 内置的截图功能来捕捉测试过程中的截图。

Playwright 提供了内置的截图功能,可以捕捉测试过程中的任何时刻的屏幕截图,方便后续的问题分析和排查。具体使用方法可以参考 Playwright 官方文档。

3、使用 Playwright 的多语言支持,例如 Python、Java、C# 等。

Playwright 提供了多语言支持,您可以使用您最熟悉的编程语言来编写测试脚本,例如 Python、Java、C# 等。具体使用方法可以参考 Playwright 官方文档中对应的语言文档。

4、使用 Playwright 的多浏览器支持,例如 Chrome、Firefox、Edge 等。

Playwright 提供了多浏览器支持,您可以使用多个浏览器来执行测试脚本,例如 Chrome、Firefox、Edge 等。具体使用方法可以参考 Playwright 官方文档。

5、使用 Playwright 的无头模式,来实现在无界面浏览器中运行测试脚本。

Playwright 提供了无头模式,可以在无界面的浏览器中运行测试脚本,这样可以大大提高测试效率和减少运行测试脚本的资源消耗。具体使用方法可以参考 Playwright 官方文档。

6、使用 Playwright 的网络拦截功能,来模拟不同的网络环境和测试网络请求。

Playwright 提供了网络拦截功能,可以模拟不同的网络环境和测试网络请求,例如模拟慢速网络、模拟请求失败等。具体使用方法可以参考 Playwright 官方文档。

7、使用 Playwright 的多页面支持,来测试复杂的多页面应用程序。

Playwright 提供了多页面支持,可以测试复杂的多页面应用程序,例如跨页面的交互、页面之间的导航等。具体使用方法可以参考 Playwright 官方文档。

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号