创建 Node.js Playwright 项目:从零开始搭建自动化测试环境
一、环境准备
在开始创建 Playwright 项目之前,确保你的电脑上已经安装了以下工具:
-
Node.js:Playwright 依赖于 Node.js 环境,确保你已经安装了最新版本的 Node.js。可以通过以下命令检查是否安装成功:
node -v npm -v -
VS Code 编辑器:虽然你可以使用任何代码编辑器,但 VS Code 提供了丰富的插件支持,特别是 Playwright 插件,可以极大提高开发效率。
二、通过 npm 创建 Playwright 项目
-
创建项目文件夹:在桌面或其他你想要创建项目的目录下,创建一个新的文件夹。例如:
mkdir my-playwright-project cd my-playwright-project -
执行初始化命令:使用 npm 提供的命令来创建 Playwright 项目。执行以下命令:
npm create playwright@latest这个命令会引导你完成项目的初始化,包括选择编程语言(TypeScript 或 JavaScript)、是否安装浏览器等。
-
选择编程语言:根据你的需求选择 TypeScript 或 JavaScript。如果你是初学者,建议选择 JavaScript,因为它的语法相对简单。
? Select language TypeScript -
选择是否安装浏览器:Playwright 支持多种浏览器,但你可以选择是否在项目初始化时安装浏览器。如果你不确定,可以选择不安装,稍后可以手动安装。
? Select browsers to install (Use arrow keys) -
项目初始化完成:命令执行完成后,Playwright 会自动生成
package.json文件,并安装必要的依赖。你可以通过以下命令检查项目是否创建成功:npm run test
如果你也遇到了这个报错↓
PS E:\autostudy_main\visual\my_projectplw01> npm run test npm error Missing script: "test" npm error npm error To see a list of scripts, run: npm error npm run
你的错误是因为 package.json 文件中缺少 test 脚本。以下是解决方案:
1. 检查 package.json 中的 scripts 字段
打开项目根目录下的 package.json,确认是否存在类似配置:
json
Copy Code
"scripts": {
"test": "playwright test" // 或其他测试命令(如 jest、mocha)
}
如果没有 test 脚本,需手动添加并保存文件。
2. 使用正确的测试命令
Playwright 项目:应配置为 "test": "playwright test"。
Vue/React 项目:可能需改为 "test": "vue-cli-service test" 或 "test:unit"。
3. 重新安装依赖(可选)
若修改后仍报错,尝试:
bash
Copy Code
npm install # 确保依赖完整安装
4. 其他注意事项
确保项目根目录下有 playwright.config.ts(Playwright 项目)或对应的测试配置文件。
若使用第三方测试工具(如 Jest),需先安装对应包:
bash
Copy Code
npm install jest --save-dev
总结步骤
编辑 package.json → 添加/修正 test 脚本。
保存文件后重新运行 npm run test。
若问题持续,检查测试工具是否安装正确。
遇到具体工具报错时,可提供 package.json 内容进一步分析。
就可以继续进行了
三、通过 VS Code 插件创建 Playwright 项目
-
安装 Playwright 插件:打开 VS Code,点击左侧的扩展图标,搜索
Playwright,安装Playwright Test for VS Code插件。 -
创建项目:安装完成后,打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P),搜索
Playwright: Install,选择Install Playwright。 -
选择编程语言:插件会提示你选择编程语言,选择 JavaScript 或 TypeScript。
-
选择是否安装浏览器:同 npm 创建项目时的选择,你可以选择是否安装浏览器。
-
项目初始化完成:插件会自动创建项目文件夹,并安装必要的依赖。你可以通过以下命令检查项目是否创建成功:
npm run test
四、项目文件结构
创建 Playwright 项目后,项目文件夹中会包含以下文件和目录:
package.json:项目的配置文件,包含依赖和脚本。package-lock.json:锁定依赖版本的文件。node_modules:存放项目依赖的文件夹。tests:存放测试文件的文件夹。playwright.config.js:Playwright 的配置文件。
五、常见问题及解答(FAQ)
| 问题 | 答案 |
|---|---|
| Q1: 什么是 Playwright? | Playwright 是一个 Node.js 库,用于自动化浏览器操作。它支持多种浏览器(如 Chromium、Firefox 和 WebKit),并提供了强大的 API 用于编写端到端测试。 |
| Q2: 为什么选择 Playwright? | Playwright 提供了跨浏览器支持、自动等待、截屏等功能,使得编写和维护自动化测试更加简单。此外,Playwright 的 API 设计简洁,易于上手。 |
| Q3: 如何选择 TypeScript 或 JavaScript? | 如果你熟悉 TypeScript,建议选择 TypeScript,它提供了更好的类型检查和代码提示。如果你是初学者,可以选择 JavaScript,它的语法相对简单。 |
| Q4: 是否必须安装浏览器? | 不是必须的。如果你不选择安装浏览器,Playwright 会使用默认的浏览器进行测试。你可以在需要时手动安装特定的浏览器。 |
| Q5: 如何运行测试? | 你可以通过 npm run test 命令来运行测试。如果你使用 VS Code 插件,也可以通过插件提供的命令面板来运行测试。 |
六、相似概念对比
| 概念 | Playwright | Selenium |
|---|---|---|
| 支持的浏览器 | Chromium, Firefox, WebKit | Chrome, Firefox, Safari, Edge |
| 自动化类型 | 端到端测试 | 端到端测试、单元测试 |
| 语言支持 | JavaScript, TypeScript | 多种语言(Java, Python, C#, JavaScript 等) |
| 安装复杂度 | 简单,使用 npm 或 VS Code 插件 | 较复杂,需要配置驱动程序 |
| API 设计 | 简洁,易于上手 | 较复杂,需要更多配置 |
七、代码示例
-
创建一个简单的测试文件:
// tests/example.spec.js const { test, expect } = require('@playwright/test');test('测试页面标题', async ({ page }) => {await page.goto('https://playwright.dev');await expect(page).toHaveTitle('Fast and reliable end-to-end testing for modern web apps | Playwright'); }); -
配置 Playwright:
// playwright.config.js const { PlaywrightTestConfig } = require('@playwright/test');const config: PlaywrightTestConfig = {use: {headless: false,viewport: { width: 1280, height: 720 },},projects: [{name: 'chromium',use: { browserName: 'chromium' },},{name: 'firefox',use: { browserName: 'firefox' },},{name: 'webkit',use: { browserName: 'webkit' },},], };module.exports = config; -
运行测试:
npm run test
通过以上步骤,你已经成功创建了一个 Playwright 项目,并编写了一个简单的测试用例。接下来,你可以根据项目需求,进一步扩展和优化你的自动化测试。
相关文章:
创建 Node.js Playwright 项目:从零开始搭建自动化测试环境
一、环境准备 在开始创建 Playwright 项目之前,确保你的电脑上已经安装了以下工具: Node.js:Playwright 依赖于 Node.js 环境,确保你已经安装了最新版本的 Node.js。可以通过以下命令检查是否安装成功: node -v npm -…...
浅谈AI致幻
文章目录 当前形势下存在的AI幻觉(AI致幻)什么是AI幻觉AI幻觉的类型为什么AI会产生幻觉AI幻觉的危害与影响当前应对AI幻觉的技术与方法行业与学术界的最新进展未来挑战与展望结论 当前形势下存在的AI幻觉(AI致幻) 什么是AI幻觉 …...
postman乘法计算,变量赋值
postman脚本怎么计算乘法 在Postman中,你可以通过多种方式计算乘法,这取决于你的具体需求。例如,如果你想在发送请求前计算乘法结果,或者在测试标签中计算响应数据的乘法,下面是一些常见的方法。 1. 使用JavaScript代…...
自定义错误码的必要性
为什么要使用错误码,直接返回一个错误信息不好么? 下面介绍一下,在程序开发中使用错误码的必要性~ 便于排查问题 想象你开了一家奶茶店,顾客下单后可能出现各种问题: 没珍珠了(错误码:50…...
车载软件架构 --- 二级boot设计说明需求规范
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
管理杂谈——采石矶大捷的传奇与启示
南宋抗金史上,岳飞与岳家军的铁血传奇家喻户晓,但另一位力挽狂澜的“文官战神”却常被忽视——他从未掌兵,却在南宋存亡之际整合溃军,以少胜多,缔造采石矶大捷。此人正是虞允文。一介书生何以扭转乾坤?他的…...
Java高效合并Excel报表实战:GcExcel让数据处理更简单
前言:为什么需要自动化合并Excel? 在日常办公场景中,Excel报表合并是数据分析的基础操作。根据2023年企业办公效率报告显示: 财务人员平均每周花费6.2小时在Excel合并操作上人工合并的错误率高达15%90%的中大型企业已采用自动化…...
第十四届蓝桥杯 2023 C/C++组 平方差
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 第一种思路: 第二种思路: 坑点: 代码: 数学找规律 O(n) 50分代码详解: O(1)满分代码详解&#x…...
前端路由缓存实现
vue3缓存实现完整版,查看这篇设计和实现方式吧,更完整...
I/O复用函数的使用——select
I/O复用函数的使用——select 目录 一、概念 二、select接口 2.1 基础概念 2.2 使用 select 函数的标准输入读取代码 2.3 基于 select 模型的多客户端 TCP 服务器实现 一、概念 i/o复用使得程序能同时监听多个文件描述符,可以提高程序性能。 之前为了让服务器能…...
ubuntu20.04安装安装x11vnc服务基于gdm3或lightdm这两种主流的显示管理器。
前言:在服务端安装vnc服务,可以方便的远程操作服务器,而不用非要插上显示器才行。所以在服务器上安装vnc是很重要的。在ubuntu20中,默认的显示管理器已经变为gdm3,它可以带来与 GNOME 无缝衔接的体验,强调功…...
图像预处理-图像轮廓特征查找
其实就是外接轮廓,有了轮廓点就可以找到最上、最下、最左、最右的四个坐标(因为有xmin,xmax,ymin,ymax)。就可以绘制出矩形。 一.外接矩形 cv.boundingRect(轮廓点) - 返回x,y,w,h,传入一个轮廓的轮廓点,若有多个轮廓需…...
全同态加密医疗数据分析集python实现
目录 摘要一、前言二、全同态加密与医疗数据分析概述2.1 全同态加密(FHE)简介2.2 医疗数据分析需求三、数据生成与预处理四、系统架构与流程4.1 系统架构图五、核心数学公式六、异步任务调度与(可选)GPU 加速七、PyQt6 GUI 设计八、完整代码实现九、自查测试与总结十、展望…...
list的学习
list的介绍 list文档的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一…...
HarmonyOS:Navigation实现导航之页面设置和路由操作
导读 设置标题栏模式设置菜单栏设置工具栏路由操作页面跳转页面返回页面替换页面删除移动页面参数获取路由拦截 子页面页面显示类型页面生命周期页面监听和查询 页面转场关闭转场自定义转场共享元素转场 跨包动态路由系统路由表自定义路由表 示例代码 Navigation组件适用于模块…...
管道位移自动化监测方案
一、背景 管道系统在区域性地质沉降作用下易形成非均匀应力场集中现象,诱发管体屈曲变形及环焊缝界面剥离等连续损伤累积效应,进而导致管道力学性能退化与临界承载能力衰减。传统人工巡检受限于空间覆盖度不足及数据采集周期长(≥72h…...
AI之pdf解析:Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析及使用建议
目录标题 Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析1. Tesseract类型: 开源 OCR 引擎特点:缺点:适用场景: 2. PaddleOCR (推荐)类型:特点:缺点:适用场景: 复杂版式文档、多语言混合文本、需要高精度识别的场景&#…...
【学习笔记】机器学习(Machine Learning) | 第五周| 分类与逻辑回归
机器学习(Machine Learning) 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习(Machine Learning)简要声明 一、逻辑回归的基本原理分类判断条件模型输出的解释Sigmoid 函数与 Logistic 函数逻辑…...
悬停以及点击切换图片
为了实现悬停切换图片的功能,我们可以为每个按钮添加鼠标悬停事件监听器。以下是详细步骤和代码: 首先在控制器类中添加初始化方法,并添加事件监听器: package com.example.demo6;import javafx.event.ActionEvent; import java…...
Python 深度学习 第8章 计算机视觉中的深度学习 - 卷积神经网络使用实例
Python 深度学习 第8章 计算机视觉中的深度学习 - 卷积神经网络使用实例 内容概要 第8章深入探讨了计算机视觉中的深度学习,特别是卷积神经网络(convnets)的应用。本章详细介绍了卷积层和池化层的工作原理、数据增强技术、预训练模型的特征…...
Python基础总结(九)之推导式
文章目录 一、列表推导式1.1 列表推导式的格式1.2 列表推导式的注意事项1.3 列表推导式示例 二、 字典推导式2.1 字典推导式格式2.2 字典推导式注意事项2.3 字典推导式示例 三、 元组推导式3.1 元组推导式格式3.3 元组推导式示例 Python中的推导式有列表推导式,字典…...
[免费]SpringBoot+Vue博物馆(预约)管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue博物馆(预约)管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue博物馆(预约)管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着计算机科学技术的日渐成熟ÿ…...
基于LangChain4J的AI Services实践:用声明式接口重构LLM应用开发
基于LangChain4J的AI Services实践:用声明式接口重构LLM应用开发 前言:当Java开发遇上LLM编程困境 在LLM应用开发领域,Java开发者常面临两大痛点:一是需要手动编排Prompt工程、记忆管理和结果解析等底层组件,二是复杂…...
制作一款打飞机游戏12:初稿原型
当前进展 任务回顾:在之前,我们做了大量的规划和原型设计。我们创建了关卡,添加了侧向滚动和BOSS模式背景重复,还制作了一个紧凑的瓦片集。原型完成:我们完成了五个原型,基本实现了飞机飞行、滚动…...
【python】pyCharm常用快捷键使用-(2)
pyCharm常用快捷键使用 快速导入任意类 【CTRLALTSPACE】代码补全【CTRLSHIFTENTER】代码快速修正【ALTENTER】代码调试快捷键...
位运算,状态压缩dp(算法竞赛进阶指南学习笔记)
目录 移位运算一些位运算的操作最短 Hamilton 路径(状态压缩dp模板,位运算) 0x是十六进制常数的开头;本身是声明进制,后面是对应具体的数; 数组初始化最大值时用0x3f赋值; 移位运算 左移 把二…...
极狐GitLab 项目 API 的速率限制如何设置?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目 API 的速率限制 (BASIC SELF) 引入于 15.10 版本,功能标志为rate_limit_for_unauthenticated_projects_api_…...
机器视觉lcd屏增光片贴合应用
在现代显示制造领域,LCD屏增光片贴合工艺堪称显示效果的"画龙点睛"之笔。作为提升屏幕亮度、均匀度和色彩表现的关键光学组件,增光片的贴合精度直接影响着终端用户的视觉体验。传统人工贴合方式难以满足当前超窄边框、高分辨率显示屏的严苛要求…...
VScode-py环境
settings.json {"git.ignoreLimitWarning": true,"code-runner.runInTerminal": true,"code-runner.executorMap": {"python": "python3"} } 第二句话保证在终端里面进行IO 第三句话保证python3的用户不会执行python关键…...
大模型面经 | 春招、秋招算法面试常考八股文附答案(三)
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
