如何在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"…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
