UI自动化-playwright初始用

目录

安装+使用

元素获取

元素操作

断言

总结


安装和脚本录制

安装在python目录下,命令:pip install playwright;

安装Chromium、Firefox、WebKit等浏览器的驱动文件,命令:python -m playwright install;

开始录制命令: python -m playwright codegen --target python -o my.py -b chromium https://***.com

元素获取

# 单个元素取值
page.locator("div:nth-child(1) > .svg-icon").click()
# 多元素满足取第一个
page.locator("div:nth-child(1) > .svg-icon").first.click()
# 上传
page.locator(".upload input").set_input_files(file)
# 获取元素对应内容信息
info = page.locator('.detail-header')
test_info = info.text_content()
# 获取不到元素,通过等待确认
page.wait_for_selector('button:has-text("按钮")', state='visible')
page.wait_for_selector('button:has-text("按钮")', state='hidden')
page.wait_for_selector('button:has-text("按钮")', state='visible', timeout=30000)


元素操作

# .type(value):用于模拟键盘输入,逐字符地输入指定的值。
page.locator("selector").type("1")
# .fill(value):用于清空输入框并填入新的值。
page.locator("selector").fill("1")
# .clear():清空输入框的内容。
page.locator("selector").clear()
# .press(key):可以模拟按键操作,例如按下 Enter 键。
page.locator("selector").press("Enter")
# .click():点击输入框,通常用于将焦点放在输入框上。
page.locator("selector").click()
# .focus():将焦点设置到输入框上。
page.locator("selector").focus()

断言

# 检查元素是否可见
expect(page.locator("button#submit")).to_be_visible()
# 检查元素是否包含特定文本
expect(page.locator("h1")).to_contain_text("欢迎")
# 检查元素的状态
expect(page.locator("button#submit")).to_be_enabled()  # 检查按钮是否可用
# 检查元素的数量
expect(page.locator("ul > li")).to_have_count(3)  # 检查列表项数量
# 检查元素是否被隐藏
expect(page.locator("div#loading")).to_be_hidden()

总结

  • 优点
    • 几乎是零代码模式,操作过程中即可生成代码,提效便捷
    • 支持跨浏览器和跨平台,兼容性强
    • 有自动等待功能,不需要人工等待
  • 缺点
    • 如果前端组件动态或者定义不明确,会导致自动生成的代码执行失败(需要协助调整组件,增加ID可以很好的解决)
    • 很多情况下,元素操作是直接写出按钮或文本信息,中英文就不适用(但是UI一种应该也基本不存子问题吧~~)
  • 踩坑
    • 脚本调试结束后,Linux服务器执行时,需要调整为无头模式
      from playwright.sync_api import sync_playwright
      
      with sync_playwright() as p:
          browser = p.chromium.launch(headless=True)  # 启动无头模式
      
    • 正常模式下录制的登录,Linux服务器执行时,总是卡在登录页(解决方法:确认登录后cookie等储存结构,将信息存储)

官方地址(引用):Installation | Playwright Python

<think>嗯,用户想知道如何使用Playwright搭建UI自动化测试环境。首先,我需要根据提供的引用资料整理步骤。引用里提到了安装Playwright库、初始化浏览器、编写测试脚本等。 首先,安装部分,引用1、2、5都提到要用pip安装playwright,然后执行playwright install安装浏览器驱动。需要注意镜像源的问题,比如使用豆瓣源加速下载,如引用5中的命令。安装完成后,可能还需要安装其他依赖,比如pytest和allure,如引用3提到的。 接下来是初始化项目结构,引用2和3提到目录结构的设计,比如config、test_cases、utils等目录。用户需要创建配置文件,比如config.settings.py,用来管理全局变量,如引用2中的步骤。 然后,测试用例的编写。引用4中的示例代码展示了同步和异步操作,用户需要了解如何使用fill、press、waitForSelector等方法。此外,录制脚本的功能可能对新手有帮助,引用5提到使用playwright codegen生成脚本,这样可以快速生成基础代码。 还要考虑测试框架的集成,比如结合pytest和allure生成报告,如引用3提到的安装allure-pytest并配置环境。可能还需要处理依赖管理,比如使用pipenv创建虚拟环境,如引用2中的方式一。 用户可能会遇到的问题包括浏览器驱动安装失败,或者依赖冲突。这时候需要检查网络环境,或者使用镜像源。另外,异步操作的部分可能需要一些Python的async/await知识,如引用4中的异步示例。 最后,测试环境的验证,编写一个简单的测试用例,运行并查看结果。如果遇到错误,根据报错信息排查,比如路径问题或选择器错误。确保所有步骤都正确,并参考官方文档解决更复杂的问题。</think>### 如何使用 Playwright 搭建 UI 自动化测试环境? #### 1. 安装 Playwright 及相关依赖 - **安装 Playwright Python 库**: ```bash pip install playwright ``` 可添加国内镜像源加速下载(如豆瓣源): ```bash pip install playwright -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ``` - **安装浏览器驱动**: ```bash python -m playwright install chromium # 安装 Chromium 浏览器驱动 ``` 支持 Chrome、Firefox 和 Safari,按需选择安装[^5]。 - **安装测试框架依赖**(如 Pytest 和 Allure): ```bash pip install pytest playwright pytest-playwright allure-pytest ``` #### 2. 初始化项目结构 建议目录结构如下: ``` project/ ├── config/ │ └── settings.py # 配置文件(如浏览器类型、超时时间等) ├── test_cases/ # 测试用例目录 ├── utils/ │ ├── browser.py # 浏览器初始化工具 │ └── logger.py # 日志管理 └── conftest.py # Pytest 全局配置 ``` 引用[^2]中提到的配置文件 `config.settings.py` 可定义全局参数,例如: ```python BROWSER_TYPE = "chromium" BASE_URL = "https://example.com" TIMEOUT = 10 ``` #### 3. 编写基础测试用例 - **同步模式示例**: ```python from playwright.sync_api import sync_playwright def test_search(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto("https://baidu.com") page.fill("input[name=\"wd\"]", "自动化测试") page.press("input[name=\"wd\"]", "Enter") page.wait_for_selector("text=搜索结果") browser.close() ``` - **异步模式示例**(需结合 `asyncio`): ```python import asyncio from playwright.async_api import async_playwright async def test_async_search(): async with async_playwright() as p: browser = await p.chromium.launch() page = await browser.new_page() await page.goto("https://baidu.com") await page.fill("input[name=\"wd\"]", "异步测试") await page.press("input[name=\"wd\"]", "Enter") await browser.close() ``` #### 4. 集成 Pytest 运行测试 - **通过 Pytest 运行用例**: ```bash pytest test_cases/ --headed # 非无头模式运行 ``` - **生成 Allure 报告**: ```bash pytest test_cases/ --alluredir=./allure-results allure serve ./allure-results # 查看报告 ``` #### 5. 使用脚本录制功能(快速生成用例) 通过 `playwright codegen` 录制操作并生成代码: ```bash python -m playwright codegen https://baidu.com ``` 此工具会打开浏览器并记录用户操作,自动生成对应的 Python 脚本[^5]。 #### 6. 验证环境搭建 运行一个简单测试,检查: 1. 浏览器是否能正常启动。 2. 页面操作是否按预期执行。 3. 日志和截图是否生成(如有配置)。 --- ### 常见问题解决 - **浏览器驱动安装失败**:检查网络或使用代理,确保能访问 `https://playwright.dev`。 - **依赖冲突**:建议使用虚拟环境(如 `pipenv` 或 `venv`)隔离依赖。 - **元素定位失败**:通过 Playwright DevTools 的 `Selector Inspector` 验证选择器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值