首页 > 编程语言 >python+playwright 学习-55 在docker 容器中运行playwright脚本

python+playwright 学习-55 在docker 容器中运行playwright脚本

时间:2023-04-29 20:32:57浏览次数:50  
标签:playwright python 55 Ubuntu 镜像 Docker root page

前言

Dockerfile.focal可用于在 Docker 环境中运行 Playwright 脚本。这些镜像包括在 Docker 容器中运行浏览器所需的所有依赖项,还包括浏览器本身。
playwright 在linux 系统上目前只支持Ubuntu 系统的部分版本,centos 和debian系统上是没法运行的。

镜像

查看所有可用的图像标签https://mcr.microsoft.com/en-us/product/playwright/python/about

Docker 镜像由 GitHub Actions 自动发布。我们目前发布带有以下标签的图像(v1.20.0在本例中是一个示例:):

  • :next- 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :next-focal- 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :v1.20.0- Playwright v1.20.0 发布基于 Ubuntu 20.04 LTS (Focal Fossa) 的 docker 镜像。
  • :v1.20.0-focal- Playwright v1.20.0 发布基于 Ubuntu 20.04 LTS (Focal Fossa) 的 docker 镜像。
  • :sha-XXXXXXX- 每个更改 docker 文件或浏览器的提交的 docker 图像,用短 sha标记(SHA 提交的前 7 位数字)。

如果可能,建议始终将 Docker 映像固定到特定版本。如果 Docker 映像中的 Playwright 版本与项目/测试中的版本不匹配,Playwright 将无法找到浏览器可执行文件。

我们目前发布基于以下Ubuntu版本的镜像:
Ubuntu 22.04 LTS (Jammy Jellyfish),图像标签包括jammy(未针对 Java 发布)
Ubuntu 20.04 LTS (Focal Fossa),图像标签包括focal
为 Firefox 和 WebKit 构建的浏览器是为glibc库构建的。不支持基于musl标准库的 Alpine Linux 和其他发行版。

docker 使用

此 Docker 镜像已发布到 Microsoft Artifact Registry, 访问地址https://mcr.microsoft.com/en-us/product/playwright/python/about

拉取镜像

目前最新的镜像版本v1.32.0-focal

docker pull mcr.microsoft.com/playwright/python:v1.32.0-focal

运行容器

默认情况下,Docker 镜像将使用root用户来运行浏览器。这将禁用 root 无法使用的 Chromium 沙箱。如果您运行可信代码(例如端到端测试)并希望避免管理单独用户的麻烦,那么 root 用户可能没问题。对于网络抓取或爬行,我们建议在 Docker 容器内创建一个单独的用户并使用 seccomp 配置文件。
在受信任的网站上,您可以避免创建单独的用户并为其使用 root,因为您信任将在浏览器上运行的代码。

docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.32.0-focal /bin/bash

使用示例

待执行的代码run.py

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch()
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://127.0.0.1:8000/login.html")
    print("输入用户名:yoyo")
    page.get_by_placeholder("请输入用户名").click()
    page.get_by_placeholder("请输入用户名").fill("yoyo")
    page.get_by_placeholder("请输入密码").click()
    print("输入用户名:123456")
    page.get_by_placeholder("请输入密码").fill("123456")
    page.get_by_role("button", name="立即登录 >").click()
    page.wait_for_load_state('networkidle')
    print(f"登录后的页面:{page.title()}")

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

run.py 文件放到自己服务器的指定目录,如:/root/code 下

启动容器

docker run -it --rm -v /root/code:/root --ipc=host mcr.microsoft.com/playwright/python:v1.32.0-focal /bin/bash

在容器内部执行代码

root@0c1f3728d019:/# python /root/run.py 
输入用户名:yoyo
输入用户名:123456
登录后的页面:首页
root@0c1f3728d019:/#

可以看到运行结果

运行完成后,执行exit退出容器

python+playwright 学习-55 在docker 容器中运行playwright脚本_docker


标签:playwright,python,55,Ubuntu,镜像,Docker,root,page
From: https://blog.51cto.com/u_15249893/6236881

相关文章

  • 长度最小的子数组--Python解法
    给定一个含有 n 个正整数的数组和一个正整数target。找出该数组中满足其和≥target的长度最小的连续子数组 [numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。defminSubArrayLen(self,s:int,nums:List[int])->int:......
  • Python之路【第十九篇】:爬虫
    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 1.RequestsPython标准库中提供了:urllib、urllib2、httplib等模块......
  • python将pdf转为txt
    #encoding=utf8#-*-coding:utf-8-*-#pipinstallpypdf2-ihttps://pypi.tuna.tsinghua.edu.cn/simpleimportPyPDF2fromioimportStringIOcontent_all_list=[]#打开PDF文件并创建一个PyPDF2对象withopen('Scrum-Guide-Chinese-Simplified.pdf','r......
  • #yyds干货盘点#python包
    包是一种用“点式模块名”构造Python模块命名空间的方法。例如,模块名 A.B 表示包 A 中名为 B 的子模块。正如模块可以区分不同模块之间的全局变量名称一样,点式模块名可以区分NumPy或Pillow等不同多模块包之间的模块名称。假设要为统一处理声音文件与声音数据设计一个模......
  • Python之路【第十八篇】:Web框架们
    Python的WEB框架1.BottleBottle是一个快速、简洁、轻量级的基于WSIG的微型Web框架,此框架只由一个.py文件,除了Python的标准库外,其不依赖任何其他模块。 pipinstallbottleeasy_installbottleapt-getinstallpython-bottlewgethttp://bottlepy.org/bottle.py......
  • Python 与 Pycharm 安装
    推荐到官网下载,不推荐使用各种电脑管家如果没有强烈的版本要求,建议使用最新版Python安装到Python官网下载页面下载安装包,官网会自动根据当前系统推荐适合的安装包笔者此时最新版为Windows版本下的3.11.3,如果官网进不去,可以从笔者提供的备用地址下载下载完安装包后打......
  • Python 希尔排序(Shell Sort)原理以及应用
    希尔排序的原理:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序的原理是将待排序的序列按照一定间隔分成若干个子序列,对每个子序列使用插入排序进......
  • Python之路【第十七篇】:Django【进阶篇】
    原博客笔记链接:https://www.cnblogs.com/wupeiqi/articles/5246483.html 1.Model到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:创建数据库,设计表结构和字段使用MySQLdb来连接数据库,并编写数据访问层代码业务逻辑层去调用数据访问层执行数......
  • [oeasy]python0143_主控程序_main
    主控程序回忆上次内容上次把apple.py拆分成了输入主函数引用模块中变量的时候要带上包(module)名get_fruits.aget_fruits.b最终拆分代码成功!可以将程序再拆分成输入输出然后再由主函数调用吗?......
  • [oeasy]python0143_主控程序_main
    主控程序回忆上次内容上次把apple.py拆分成了输入主函数 引用模块中变量的时候要带上包(module)名get_fruits.aget_fruits.b  最终拆分代码成功! 可以将程序再拆分成输入输出 然后再由主函......