(3)Playwright自动化-3-离线搭建playwright环境

1.简介

如果是在公司局域网办公,或者公司为了安全对网络管控比较严格这种情况下如何搭建环境,我们简单来看看

(第一种情况及解决办法:带要搭建环境的电脑到有网的地方在线安装即可。

(第二种情况及解决办法:如果电脑无法带到有网的地方进行在线安装,那就用别的电脑下载好安装包,用U盘将安装包拷贝到要搭建的电脑安装即可。)

在本地局域网部署好playwright 环境。

2.本地下载playwright

2.1单个下载离线包

1.第二种情况:要搭建的电脑无法访问外网,也不能将电脑带到有网络的地方进行在线安装playwright环境。那就只能找个可以访问外网的电脑进行下载playwright,但是要注意:不要去pypi库单独下载这一个包,因为它在安装过程中还会下载其他依赖包。但是如果你只下载一个playwright-1.32.1-py3-none-win_amd64.whl,然后使用pip安装肯定会失败。那么说一下正确的方法:通过 pip download playwright 下载安装包。

下载单个离线包:下载单个离线包: pip download  <package_name> -d 文件夹名或者路径 

pip download playwright -d ./down

其中 -d 参数是指定下载安装到本地down目录。

 

2.正常情况下会下载以下四个包,如下图所示:

 

 

3.如果你还需要有其他的包需要下载,也可以按上面方式下载,比如pytest,allure-pytest 等包。

2.2批量下载离线包

确认依赖包名与版本:在其他环境中找到要安装的依赖包名及版本并导出:pip freeze > requirements.txt,requirements.txt中即为要的包信息。就以上边的playwright包为例。本地已经安装了一些依赖包了,可以通过pip freeze > requirements.txt, 导出本地的全部依赖包到requirements.txt文件。

1.进入依赖包的文件夹中,输入命令: pip freeze > requirements.txt 。 如下图所示:

 

2.进入文件夹查看 requirements.txt  文件内容如下:

greenlet==2.0.1
playwright==1.33.0
pyee==9.0.4
typing-extensions==4.5.0

3.再通过download命令下载全部

pip download -r requirements.txt -d ./down

 

3.离线安装

3.1单个离线安装

安装单个离线包: pip install --no-index --find-links=/资源文件夹/ <package_name>

1.把前面下载的down文件下全部包上传到你局域网的电脑上。本地离线单个安装依赖包

pip install --no-index  --find-links=D:\software\Python\Python37\Lib\site-packages -r greenlet-2.0.1-cp37-cp37m-win_amd64.whl

2.按照上边的命令将4个包,一一安装即可。

 

3.2批量离线安装

批量安装离线包:pip install --no-index --find-links=/资源文件夹/ -r requirements.txt

1.把前面下载的down文件下全部包,以及requirements.txt文件上传到你局域网的电脑上。本地离线批量安装依赖包

pip install --no-index  --find-links=D:\software\Python\Python37\Lib\site-packages -r requirements.txt

2.只要你 requirements.txt 文件的包和下载的包是一一对应的,上面的安装就不会报错了。

 

到这一步playwright 的基本环境就已经安装完成了。

4.离线安装浏览器

4.1离线安装chromium,firefox 和 webkit

如果你有安装chromium,firefox 和 webkit 这3个官方提供的内置浏览器的需求,我们先看去哪里下载到这3个浏览器, 在终端执行以下命令

playwright install --dry-run

它会根据你当前安装的playwright (我当前版本是1.33.0)版本,给出对应的浏览器最近匹配版本,以及下载地址

 

4.2安装chromium 

这个和在线安装一样,就是下载对应的安装包,然后安装到在线安装浏览器的那个路径下即可。

1.以 chromium 安装为例,从上边的docs命令窗口我们可以清楚的看到chromium的Download url: https://playwright.azureedge.net/builds/chromium/1060/chromium-win64.zip

2.先下载: https://playwright.azureedge.net/builds/chromium/1060/chromium-win64.zip
3.下载后是一个chromium-win64.zip压缩包。
4.接着看Install location 安装位置:C:\Users\DELL\AppData\Local\ms-playwright\chromium-1060按照这个路径依次创建文件夹,把压缩包放到chromium-1060下解压即可

 

5.还有个 ffmpeg 包也需要按上面的路径正确解压,此包跟录制视频有关。

6.这样你本地就有了对应的chromium,firefox 和 webkit 环境。在ms-playwright 目录下有以下四个文件

 

5.本地浏览器

有些小伙伴或者是童鞋们,觉得太麻烦想使用本地安装的浏览器也是可以的。以Chrome为例。

5.1启动本地Chrome浏览器

1.首先你确保在你自己本机电脑上安装了chrome浏览器,并且安装是按默认的安装路径。

2.那么在启动的时候,只需指定channel='chrome' 就可以启动本地chrome 浏览器了。

# coding=utf-8🔥
# 1.导入模块from playwright.sync_api import sync_playwrightwith sync_playwright() as p:'''默认为无头浏览器方式启动  '''browser = p.chromium.launch(channel='chrome', headless=False)         # 启动 chrome 浏览器page = browser.new_page()              # 打开一个标签页page.goto("https://www.baidu.com")     # 打开百度地址print(page.title())                    # 打印当前页面titlepage.click("input[name=\"wd\"]")       # 点击输入框page.fill("input[name=\"wd\"]", "webkit")  # 在输入框输入浏览器名字# page.screenshot(path=f'example-{p.webkit.name}.png')  #使用浏览器名字命名截图browser.close()                        # 关闭浏览器对象

6.小结

如果在启动Chrome时遇到以下报错,说明你浏览器没正确安装,重新安装一次chrome浏览器,按默认的路径安装即可。

playwright._impl._api_types.Error: Chromium distribution 'chrome' is not found at C:\Users\dell\AppData\Local\Google\Chrome\Application\chrome.exe Run "playwright install chrome"

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Fiddler抓取手机数据包】

Fiddler抓取手机数据包的配置方法 确保电脑和手机在同一局域网 电脑和手机需连接同一Wi-Fi网络。可通过电脑命令行输入ipconfig查看电脑的本地IP地址&#xff08;IPv4地址&#xff09;&#xff0c;手机需能ping通该IP。 配置Fiddler允许远程连接 打开Fiddler&#xff0c;进入…

PublishSubject、ReplaySubject、BehaviorSubject、AsyncSubject的区别

python容易编辑&#xff0c;因此用pyrx代替rxjava3做演示会比较快捷。 pyrx安装命令&#xff1a; pip install rx 一、Subject&#xff08;相当于 RxJava 的 PublishSubject&#xff09; PublishSubject PublishSubject 将对观察者发送订阅后产生的元素&#xff0c;而在订阅前…

BLE中心与外围设备MTU协商过程详解

一、MTU基础概念​​ 1. ​​MTU定义​​ ​​最大传输单元&#xff08;MTU&#xff09;​​ 指单次数据传输中允许的最大字节数&#xff0c;包含协议头部&#xff08;3字节&#xff09;和有效载荷&#xff08;最多517字节&#xff09;。BLE默认MTU为​​23字节​​&a…

【华为云Astro-服务编排】服务编排使用全攻略

目录 概述 为什么使用服务编排 服务编排基本能力 拖拉拽式编排流程 逻辑处理 对象处理 服务单元组合脚本、原生服务、BO、第三方服务 服务编排与模块间调用关系 脚本 对象 标准页面 BPM API接口 BO 连接器 如何创建服务编排 创建服务编排 如何开发服务编排 服…

centos实现SSH远程登录

1. 生成SSH密钥对 首先&#xff0c;你需要在客户端机器上生成一个SSH密钥对。打开终端&#xff0c;执行以下命令 ssh-keygen 或ssh-keygen -t rsa -b 2048&#xff08;效果相同&#xff09; 按照提示操作&#xff0c;可以按回车键接受默认的文件名&#xff08;通常是~/.ssh/id_…

定制开发开源AI智能名片S2B2C商城小程序在无界零售中的应用与行业智能升级示范研究

摘要&#xff1a;本文聚焦无界零售背景下京东从零售产品提供者向零售基础设施提供者的转变&#xff0c;探讨定制开发开源AI智能名片S2B2C商城小程序在这一转变中的应用。通过分析该小程序在商业运营成本降低、效率提升、用户体验优化等方面的作用&#xff0c;以及其与京东AI和冯…

ZooKeeper 安装教程(Windows + Linux 双平台)

ZooKeeper 安装教程(Windows + Linux 双平台) Zookeeper 和 Kafka 版本与 JDK 要求 一、安装前准备 系统要求 Java 环境(JDK17+)开放端口:2181(客户端),2888(集群通信),3888(选举)安装 Java Linux(Ubuntu/CentOS) # Ubuntu

【Git系列】如何同步原始仓库的更新到你的fork仓库?

&#x1f389;&#x1f389;&#x1f389;欢迎来到我们的博客&#xff01;无论您是第一次访问&#xff0c;还是我们的老朋友&#xff0c;我们都由衷地感谢您的到来。无论您是来寻找灵感、获取知识&#xff0c;还是单纯地享受阅读的乐趣&#xff0c;我们都希望您能在这里找到属于…

Could not obtain transaction-synchronized Session for current thread

背景 写了一个函数&#xff0c;分别支持手动调用和定时任务调用。 测试的时候一直用手动点击按钮触发函数&#xff0c;功能可用 等到了测试定时任务的时候&#xff0c;后台报错 Could not obtain transaction-synchronized Session for current thread错误分析 事务管理不匹…

linux nm/objdump/readelf/addr2line命令详解

我们在开发过程中通过需要反汇编查看问题&#xff0c;那么我们这里使用rk3568开发板来举例nm/objdump/readelf/addr2line 分析动态库和可执行文件以及.o文件。 1&#xff0c;我们举例nm/objdump/readelf/addr2line解析linux 内核文件vmlinux &#xff08;1&#xff09;,addr2…

C++自定义简单的内存池

内存池简述 在C的STL的容器中的容器如vector、deque等用的默认分配器(allocator)都是从直接从系统的堆中申请内存&#xff0c;用一点申请一点&#xff0c;效率极低。这就是设计内存池的意义&#xff0c;所谓内存池&#xff0c;就是一次性向系统申请一大片内存&#xff08;预分…

【极客日常】分享go开发中wire和interface配合的一些经验

在先前一篇文章中&#xff0c;笔者给大家提到了go语言后端编程可以用wire依赖注入模块去简化单例服务的初始化&#xff0c;同时也可以解决服务单例之间复杂依赖的问题。但实事求是来讲&#xff0c;用wire也是有一些学习成本的&#xff0c;wire在帮助解决复杂依赖的问题同时&…

20250605车充安服务器受木马攻击导致服务不可用

https://mp.weixin.qq.com/s/2JyxmDIDBa9_owNjIJ6UIg 因业务服务器受木马攻击&#xff0c;服务器网络资源损耗&#xff0c;业务负载能力受损

web3-虚拟合约 vs 现实合同:权利、义务与资产的链上新秩序

web3-虚拟合约 vs 现实合同&#xff1a;权利、义务与资产的链上新秩序 一、智能合约vs真实世界合约 传统合约&#xff1a;基础要素 如下图&#xff0c;现实世界的合约&#xff0c;会有一个条款&#xff0c;然后下面还有一个“Alice”的签名 提出合约和接受合约&#xff1b; …

【面经分享】京东

线程池核心参数 7 个参数。 coreSize maxSize 阻塞队列 时间 时间 线程工厂 拒绝策略 核心参数的话&#xff0c;有 coreSize、阻塞队列、拒绝策略。 JVM 组成 内存上划分&#xff1a; 线程私有&#xff1a;Java 虚拟机栈&#xff0c;本地方法栈、Tlab、程序计数器 …

工作流引擎-11-开源 BPM 项目 jbpm

工作流引擎系列 工作流引擎-00-流程引擎概览 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&#xff0c;支持现实世界的流程自动化需求 工作流引擎-02-BPM OA ERP 区别和联系 工作流引擎-03-聊一聊流程引擎 工作流引擎-04-流程引擎 activiti 优…

深度学习在非线性场景中的核心应用领域及向量/张量数据处理案例,结合工业、金融等领域的实际落地场景分析

一、工业场景&#xff1a;非线性缺陷检测与预测 1. ‌半导体晶圆缺陷检测‌ ‌问题‌&#xff1a;微米级划痕、颗粒污染等缺陷形态复杂&#xff0c;与正常纹理呈非线性关系。‌解决方案‌&#xff1a; ‌输入张量‌&#xff1a;高分辨率晶圆图像 → 三维张量 (Batch, Height,…

Python-线程同步

多线程 案例 说明&#xff1a; 唱歌方法 sing()跳舞方法 dance()启用两个线程调用主线程结束 代码 # 导入线程模块 import threading import timedef sing(name,age):time.sleep(2)print(唱歌者姓名&#xff1a; name &#xff0c;年龄&#xff1a; str(age))print(正在唱…

前端八股之JS的原型链

1.原型的定义 每一个对象从被创建开始就和另一个对象关联&#xff0c;从另一个对象上继承其属性&#xff0c;这个另一个对象就是 原型。 当访问一个对象的属性时&#xff0c;先在对象的本身找&#xff0c;找不到就去对象的原型上找&#xff0c;如果还是找不到&#xff0c;就去…

kafka命令

kafka安装先安装zookeeper&#xff0c;jdk 确保jdk版本与kafka版本匹配&#xff1a; 先启动zookeeper&#xff1a; # 启动独立安装的zookeeper ./zkServer.sh start # 也可以自动kafka自带的zookerper ./zookeeper-server-start.sh ../config/zookeeper.pr…