如何在Ubuntu 20.04.6 LTS系统上运行Playwright自动化测试
写在前面
- 这里以 Ubuntu 20.04.6 LTS为例。
- 示例代码:自动化测试代码。
如果过程中遇到其他非文本中提到的错误,可以使用搜索引擎搜索错误,找出解决方案,再逐步往下进行。
一、 环境准备
1.1 安装python3
1.1.1 使用APT安装Python3
sudo apt update
sudo apt install -y python3
1.1.2 使用PPA安装较新版本的Python3
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.9 # 这里安装的是 Python 3.9
1.1.3 从源代码编译安装Python3
1)首先需要安装依赖项
sudo apt-get update
sudo apt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev wget
2)然后可以从官方下载源代码包并解压
wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tgz
tar -xf Python-3.x.x.tgz
cd Python-3.x.x
3)最后进行编译和安装:
./configure --enable-optimizations
make -j8
sudo make altinstall
4)查看已安装python版本
python3 --version
python3 -V
1.2 安装pip3
通常安装python3后,不会自动安装pip。你需要手动安装pip。
sudo apt update
sudo apt install -y python3-pip
查看pip版本
pip3 --version
pip3 -V
1.3 安装jdk
allure生成测试报告,需要有java环境,否则会无法生成。
# 检查是否安装了java,已安装会显示jdk版本
java --version# 安装jdk
sudo apt update
sudo apt install -y openjdk-8-jdk
1.4 使用Git拉取自动化测试代码/复制自动化测试代码到Ubuntu 20.04.6 LTS
如果使用git拉取自动化测试代码,需要在Ubuntu 20.04.6 LTS环境安装git。
sudo apt update
sudo apt install -y git# 查看git版本
git --version
二、安装pipenv,管理环境所需依赖
# 安装pipenv,用于管理环境依赖
pip install pipenv
2.1 可能的报错1

我们需要卸载出现问题的setuptools 版本:68.2.0, 安装setuptools==67.6.1
pip uninstall setuptools
pip install setuptools==67.6.1

2.2 可能的报错2

1)打开终端,并编辑用户主目录下的.bashrc文件
nano ~/.bashrc
2)在.bashrc文件末尾添加以下行:
export PATH="$HOME/.local/bin:$PATH"
3)保存文件并关闭编辑器
在nano编辑器中保存并退出文件,您可以使用以下步骤:
按下Ctrl和O键。这将提示您输入文件名以保存更改。
输入文件名并按下Enter键。
然后按下Ctrl和X键,将关闭nano编辑器并返回到终端。
注意:如果您还没有保存文件,则按下Ctrl和X键将提示您是否放弃更改或保存更改。如果要放弃更改,请按下N键;如果要保存更改,请按下Y键,然后输入文件名并按下Enter键。
如果您在编辑器中有任何其他问题,请使用Ctrl和G键来查看nano编辑器的帮助页面。
4) 执行以下命令使更改生效或者您可以重新启动终端
source ~/.bashrc

三、安装项目所需依赖
3.1 进入自动化测试代码根目录,安装项目所需依赖包
pipenv install
注意:如果当前python版本不是3.9(自动化代码指定的版本),是3.x版本(3.x指的是当前安装的python版本),需要使用如下命令
pipenv install --python 3.x --skip-lock
3.1.1 可能的报错

# 确保安装了 python3.x-venv (3.x指的是当前安装的python版本)apt install python3.x-venv# 使用Python 3.x的venv模块来创建虚拟环境
sudo apt install python3.x-venv# 以下命令激活虚拟环境
source myenv/bin/activate
3.2. 安装浏览器驱动和浏览器依赖
进入自动化测试代码根目录,在pipenv管理的虚拟环境里面安装playwright所需浏览器驱动
pipenv run playwright install
环境中缺失浏览器所需依赖,运行时会报错如下:

我们需要在pipenv管理的虚拟环境中安装浏览器所需依赖:
pipenv run playwright install-deps
四、运行测试
进入自动化测试代码根目录,在pipenv管理的虚拟环境里面运行测试
pipenv run python run.py
相关文章:
如何在Ubuntu 20.04.6 LTS系统上运行Playwright自动化测试
写在前面 这里以 Ubuntu 20.04.6 LTS为例。示例代码:自动化测试代码。 如果过程中遇到其他非文本中提到的错误,可以使用搜索引擎搜索错误,找出解决方案,再逐步往下进行。 一、 环境准备 1.1 安装python3 1.1.1 使用APT安装Py…...
c++ sort函数cmp比较参数传入
开始 假定有一个结构体 struct node{int p,r,val; };第一种 定义cmp函数,sort直接传入cmp bool cmp(node a,node b){return a.p<b.p;} sort(vec.begin(),vec.end(),cmp);第二种 lamada表达式??这个中括号里面可以不为空,但是…...
【计算机网络笔记】什么是计算机网络?
前言计算机网络的定义交换网络什么是Internet从组成细节角度看从服务角度看 最后感谢 💖 本篇文章总字数:1342字 预计阅读时间:5~10min 建议收藏之后慢慢阅读 前言 计算机网络通信技术计算机技术。 计算机网络是通信技术与计算机技术紧密结…...
极简C++(2) 类与对象
类与对象的基本概念 CLASS类将数据以及数据上的操作封装在一起 OBJECT对象是有具体类类型的变量 打个比方,类就像一个制作月饼的摸具,那么我们可以通过这个摸具来放入面粉和馅料编程一个月饼,那么摸具就是类,而各种各样的月饼便是…...
【Java 进阶篇】JavaScript流程控制语句详解
JavaScript是一门高级编程语言,具备丰富的流程控制语句,用于控制程序的执行流程。在本篇博客中,我们将深入探讨JavaScript的流程控制语句,包括条件语句、循环语句、以及其他一些控制语句。这篇博客将逐步介绍这些概念,…...
【Page-level Heap Fengshui -- Cross-Cache Overflow】corCTF2022-cache-of-castaways
前言 什么叫 Cross Cache 呢?其实就是字面意思,我们知道内核中的大部分结构体都有自己的专属 slab 内存池。那现在我们可以想象一下这个场景,我们拥有一个特定 kmem-cache 的溢出漏洞,那么我们该如何利用呢? 程序分析…...
vue-mixin
1.vue中,混入(mixin)是一种特殊的使用方式。一个混入对象可以包含任意的组件配置选项(data, props, components, watch,computed…)可以根据需求"封装"一些可复用的单元,并在使用时根据一定的策略合并到组件的选项中,使用时和组件自…...
力扣刷题 day43:10-13
1.完全平方数 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 …...
3、在docker 容器中安装tomcat
1、在服务器上查找tomcat镜像,查看前5条 docker search tomcat --limit 5 2、拉取镜像到本地 拉取官方的tomcat到本地 docker pull tomcat:9.0.34-jdk8 3、查看本地镜像 docker images |grep tomcat 4、启动tomcat 服务 使用默认配置 docker ru…...
工业互联网系列1 - 智能制造中有哪些数据在传输
工业互联网以网络为基础,需要传输的数据种类多种多样,这些数据对于实时监控、生产优化、设备维护和决策支持等方面都至关重要。 以下是一些常见智能制造业中需要传输的数据类型: 传感器数据:制造设备上安装的传感器(如…...
centos7部署Nginx和RabbitMQ
文章目录 Nginx安装部署【简单】简介安装 RabbitMQ安装部署【简单】简介安装 Nginx安装部署【简单】 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务&am…...
Nacos集群搭建
Nacos集群搭建 1.集群结构图 Nacos集群图: 其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。 三个nacos节点的地址: 节点ipportnacos1192.168.150.18845nacos2192.168.150.18846nacos3192.168.150…...
运维小工具分享
1.windwos时间同步工具 通过NetTime软件同步 通过一个免费的同步时间软件来进行对时操作 软件官网链接:http://timesynctool.com/ 修改Windows主机时间,修改时间,时间差为10年、3年、4月份、24小时、2小时、1分钟;都可以及时与“…...
Eclipse插件安装版本不兼容问题解决方案——Papyrus插件为例
项目场景: Eclipse Papyrus安装后,没有新建Papyrus工程选项,也没有新建Papyrus Model的选项。 打开Papyrus Model会报错 问题描述 同样的,安装其他插件也是。可能某个插件之前安装是好用的,结果Eclipse的版本更新了,就再也安装不好用了 原因分析: 根本原因是因为包之…...
【Qt之QTimer】使用及技巧
简介 QTimer是Qt中的定时器类,用于执行定时操作,如在一段时间间隔后触发某个槽函数或执行特定的代码。它提供了灵活的定时功能,可以用于处理各种时间相关的任务。它是基于Qt的事件循环机制工作的。 主要函数说明 构造函数: QTim…...
零基础快速自学SQL,2天足矣。
此文是《10周入门数据分析》系列的第6篇。 想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ” 上一篇分享了数据库的基础知识,以及如何安装数据库,今天这篇分享数据库操作和SQL。 SQL全称是 Structured Query Language&#x…...
Meta开源数字水印Stable Signature,极大增强生成式AI安全
全球社交、科技巨头Meta(Facebook、Instagram等母公司)在官网宣布,开源数字水印产品Stable Signature,并公开论文。 据悉,Stable Signature是由Meta和INRIA(法国国家信息与自动化研究所)联合开…...
python实现分词器
在Python中实现分词有很多方法,具体取决于你的应用场景和数据。下面我会介绍一种常用的分词库——jieba。如果你的数据是英文,你也可以使用nltk库。 中文分词 使用jieba进行中文分词: 首先,你需要安装jieba库。如果还未安装&am…...
第五十二章 学习常用技能 - Global 映射
文章目录 第五十二章 学习常用技能定义数据库定义命名空间Global映射 第五十二章 学习常用技能 定义数据库 创建本地数据库: 登录管理门户。选择系统管理 > 配置 > 系统配置 > 本地数据库。选择创建新数据库以打开数据库向导。输入新数据库的以下信息&a…...
vue实现瀑布流
1、在 src 目录下创建 component文件夹,在文件夹中创建 vue文件。 2、在 Vue文件中写入以下内容 <div class"pubu"><div class"left"><div class"pubu-item" v-for"item in left" :key"item.id"…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
