c# - 是否可以在 Net 5 dot net/runtime MS 基础映像中使用 Selenium
问题描述
我有一个用 Net 5 编写的基本网页抓取工具,目前使用 Selenium。我想在容器中运行它,所以考虑使用 MS 官方 dotnet/runtime 基本映像,但在尝试启动 WebDriver 时遇到错误,因此假设是因为未安装 chrome 和 Selenium。
我在网上找到了各种解决方案,包括使用他们自己的官方 selenium 实例在自己的容器中运行 selenium 网格,但我找不到在同一个容器中运行它的方法。我不需要扩展实例,所以网格对于我的要求来说似乎有点矫枉过正(单个无头 chrome 实例)。
如果可能的话,谁能指出我正确的方向?
富有的
解决方案
- 让 docker 应用程序运行
- 在某处创建一个文件夹
- 在该文件夹中创建一个没有扩展名为 dockerfile 的文件 => 创建一个 txt 文件并删除 .txt
- 在该文件中粘贴以下内容
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/*
打开一个 cmd 并在该文件夹中导航并输入: docker build -t dotnet_selenium 。&& 码头运行 -it dotnet_selenium 。其中 dotnet_selenium 是图像的名称
要验证 chrome 是否已安装,请在 bash 中键入: google-chrome --version 它应该返回 Google Chrome 88.0.4324.182
推荐阅读
- javascript - 将第二个指令绑定到同一数据对象时出现 react2angular 问题(它们控制彼此的值)
- php - 无法使用 phpmailer 发送邮件
- sql - Snowflake SQL 按最近滚动 30 天的事务过滤
- autokey - 如何在 AutoKey 中用相同的缩写替换短语
- spring - 在 Spring Junit 测试中加载 ApplicationContext 失败
- ajax - Laravel/Ajax 删除功能成功后不刷新我的表
- android - 关于 FullScreenContentCallback 的问题
- python - 在请求中添加路径参数
- python - 给定一个 Python 列表,找到所有可能的平面列表,这些列表保持每个子列表的顺序?
- wordpress - 如何使自定义分类法出现在 Gutenberg BLOCK LIST 中