当前位置: 首页 > news >正文

亚马逊云科技 Lambda 运行selenium

有些定时任务需要使用自动化测试的工具,如果使用亚马逊云科技 Lambda来实现这个功能的话,那么就需要图形框架,而我们知道lambda其实是一个虚拟机,而且按照系统级别依赖比较困难。所以这里选择使用容器的形式进行发布。

在dockerfile中先安装chrome和对应的驱动,然后再安装系统级别的依赖。
Dockerfile

FROM public.ecr.aws/lambda/python@sha256:d8a8324834a079dbdfc6551831325113512a147bf70003622412565f216e36e0 as build
RUN yum install -y unzip && \curl -Lo "/tmp/chromedriver.zip" "https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip" && \curl -Lo "/tmp/chrome-linux.zip" "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1135561%2Fchrome-linux.zip?alt=media" && \unzip /tmp/chromedriver.zip -d /opt/ && \unzip /tmp/chrome-linux.zip -d /opt/FROM public.ecr.aws/lambda/python@sha256:d8a8324834a079dbdfc6551831325113512a147bf70003622412565f216e36e0
RUN yum install atk cups-libs gtk3 libXcomposite alsa-lib \libXcursor libXdamage libXext libXi libXrandr libXScrnSaver \libXtst pango at-spi2-atk libXt xorg-x11-server-Xvfb \xorg-x11-xauth dbus-glib dbus-glib-devel -y
RUN pip install selenium==4.14.0
COPY --from=build /opt/chrome-linux /opt/chrome
COPY --from=build /opt/chromedriver /opt/
COPY main.py ./
CMD [ "main.handler" ]
from selenium import webdriver
from tempfile import mkdtemp
from selenium.webdriver.common.by import Bydef handler(event=None, context=None):options = webdriver.ChromeOptions()service = webdriver.ChromeService("/opt/chromedriver")options.binary_location = '/opt/chrome/chrome'options.add_argument('--headless')options.add_argument('--no-sandbox')options.add_argument("--disable-gpu")options.add_argument("--window-size=1280x1696")options.add_argument("--single-process")options.add_argument("--disable-dev-shm-usage")options.add_argument("--disable-dev-tools")options.add_argument("--no-zygote")options.add_argument(f"--user-data-dir={mkdtemp()}")options.add_argument(f"--data-path={mkdtemp()}")options.add_argument(f"--disk-cache-dir={mkdtemp()}")options.add_argument("--remote-debugging-port=9222")chrome = webdriver.Chrome(options=options, service=service)chrome.get("https://example.com/")return chrome.find_element(by=By.XPATH, value="//html").text

这个是项目地址
https://github.com/umihico/docker-selenium-lambda

http://www.lryc.cn/news/319501.html

相关文章:

  • 算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和
  • Text-to-SQL 工具Vanna + MySQL本地部署 | 数据库对话机器人
  • linux最佳入门(笔记)
  • 加速 PyTorch 模型预测常见方法梳理
  • 【STM32定时器 TIM小总结】
  • RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools
  • 一文速通ESP32(基于MicroPython)——含示例代码
  • 记录一次业务遇到的sql问题
  • 代码分支管理
  • uniapp sqlite时在无法读取到已准备好数据的db文件中的数据
  • 源码编译部署LAMP
  • Echo框架:高性能的Golang Web框架
  • 数据结构--七大排序算法(更新ing)
  • 202203青少年软件编程(图形化) 等级考试试卷(二级)
  • 【智能硬件、大模型、LLM 智能音箱】Emo:基于树莓派 4B DIY 能笑会动的桌面机器人
  • rust学习笔记(1-7)
  • vscode jupyter 如何关闭声音
  • plt保存PDF矢量文件中嵌入可编辑字体(可illustrator编辑)
  • Nacos与Eureka的使用与区别
  • 利用express从0到1搭建后端服务
  • 如何在Ubuntu中查看编辑lvgl的demo和examples?
  • 深入了解 大语言模型(LLM)微调方法
  • C语言之快速排序
  • 获取扇区航班数
  • ​【已解决】npm install​卡主不动的情况
  • Golang协程详解
  • git:码云仓库提交以及Spring项目创建
  • 【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突
  • 【机器学习-02】矩阵基础运算---numpy操作
  • 《A Second-Order PHD Filter With Mean and Variance in Target Number》学习心得