首页 > 解决方案 > 是否可以在 Net 5 dot net/runtime MS 基础映像中使用 Selenium

问题描述

我有一个用 Net 5 编写的基本网页抓取工具,目前使用 Selenium。我想在容器中运行它,所以考虑使用 MS 官方 dotnet/runtime 基本映像,但在尝试启动 WebDriver 时遇到错误,因此假设是因为未安装 chrome 和 Selenium。

我在网上找到了各种解决方案,包括使用他们自己的官方 selenium 实例在自己的容器中运行 selenium 网格,但我找不到在同一个容器中运行它的方法。我不需要扩展实例,所以网格对于我的要求来说似乎有点矫枉过正(单个无头 chrome 实例)。

如果可能的话,谁能指出我正确的方向?

富有的

标签: c#seleniumselenium-webdriver

解决方案


  1. 让 docker 应用程序运行
  2. 在某处创建一个文件夹
  3. 在该文件夹中创建一个没有扩展名为 dockerfile 的文件 => 创建一个 txt 文件并删除 .txt
  4. 在该文件中粘贴以下内容

FROM mcr.microsoft.com/dotnet/sdk:5.0

# Install Chrome
 RUN apt-get update && apt-get install -y \
 apt-transport-https \
 ca-certificates \
 curl \
 gnupg \
 hicolor-icon-theme \
 libcanberra-gtk* \
 libgl1-mesa-dri \
 libgl1-mesa-glx \
 libpango1.0-0 \
 libpulse0 \
 libv4l-0 \
 fonts-symbola \
 --no-install-recommends \
 && curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
 && echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list \
 && apt-get update && apt-get install -y \
 google-chrome-stable \
 --no-install-recommends \
 && apt-get purge --auto-remove -y curl \
 && rm -rf /var/lib/apt/lists/*

  1. 打开一个 cmd 并在该文件夹中导航并输入: docker build -t dotnet_selenium 。&& 码头运行 -it dotnet_selenium 。其中 dotnet_selenium 是图像的名称

  2. 要验证 chrome 是否已安装,请在 bash 中键入: google-chrome --version 它应该返回 Google Chrome 88.0.4324.182


推荐阅读