在 Windows 容器中安装 Microsft Edge

问题描述 投票:0回答:3

背景

我正在尝试创建一个独立的 selenium Windows 容器,以便我们可以在 Microsoft Edge 上运行 e2e 测试。为此,我需要在容器中安装 Microsoft Edge。老实说,微软不会以任何形式发布 Edge。他们仅将 Edge 与 Windows 预打包。

不幸的是,Edge 并未预先打包在任何 Windows 容器中。我通过添加:

RUN powershell (Get-AppxPackage Microsoft.MicrosoftEdge).Version
到我的
.Dockerfile
来验证这一点,无论标签和图像如何,它总是空的。

具体问题

我想知道是否有人知道我在哪里可以找到至少半官方的 Edge 安装程序。到目前为止,我在网上或任何包管理器中都没有找到一个。

一般问题

如果您无法回答上述问题,但知道在 Windows 容器中安装 Microsoft Edge 的不同方法,请分享。

installation microsoft-edge windows-container
3个回答
1
投票

现在实际上有一个带有 Edge 和 Edgedriver 的 Docker 镜像,链接位于本页底部:https://learn.microsoft.com/en-us/microsoft-edge/webdriver-chromium/?tabs=c -锋利

https://hub.docker.com/_/microsoft-msedge-msedgedriver?tab=description

“这个实验性 docker 容器包含 Microsoft Edge (Chromium) 和 Microsoft Edge 驱动程序。”


0
投票

但现在已经是 2023 年了

截至 2023 年,比发布此问题时有更多方法可以做到这一点:

  1. 使用预构建的容器(简单但不太有用)
  2. 构建您自己的 Windows 容器(更难但有效)
  3. 在 Linux 容器中构建您自己的 Windows(最难)

小提示:要查看 Edge 是否已安装,您问题中的命令在我的本地 Windows 11 PRO 计算机上不起作用。试试这个:

(Get-Item "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe").VersionInfo

使用预建容器

正如 Krzysztof Cygan 在另一个答案中提到的,您可以从这里获取带有 MS Edge 和 MS EdgeDriver 的预构建 Windows 容器:

https://hub.docker.com/_/microsoft-msedge-msedgedriver

不幸的是,有一些缺点:

  1. 我一生都无法将我的代码放在那台机器上并从它运行命令行。它的目的是让您的 WebDriver/Selenium 测试在您的计算机上运行,您只需将测试工具指向给定端口即可驱动 MS Edge。我有数百个测试,我希望它们每个都在自己的容器中运行,并在内部运行 MS Edge,所以这对我来说不是很有用。
  2. 这个docker镜像的大小是14.1GB

构建您自己的 Windows 容器

按照此处的说明,我能够创建一个 Windows 容器,其中包含安装了 Edge 的 Windows 的功能齐全的副本。

    将其保存在名为
  1. Dockerfile
     的文件中:
#escape=` FROM mcr.microsoft.com/windows/server:ltsc2022 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # Install Edge RUN mkdir -p C:\temp -force; ` # Get the bootstrapper to install edge [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; ` Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/?linkid=2108834&Channel=Stable&language=en' -OutFile 'C:\temp\MicrosoftEdgeBootstrapperX64.exe'; ` # Start Edge bootstrapper $MSEDGE_BOOTSTRAPPER_EXE_ABSOLUTE_PATH = $(Resolve-Path 'C:\temp\MicrosoftEdgeBootstrapperX64.exe').Path; ` Start-Process $MSEDGE_BOOTSTRAPPER_EXE_ABSOLUTE_PATH -ArgumentList @( '/silent', '/install') -Wait -NoNewWindow; ` # Clean up Remove-Item $MSEDGE_BOOTSTRAPPER_EXE_ABSOLUTE_PATH -Force; ` Remove-Item C:\temp -Force; ` # Check Edge installation if(Test-Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\msedge.exe") ` { ` Write-Host "Edge installed at default location!"; ` } else { ` Write-Host "Edge not installed at default location!"; ` exit 1; ` } CMD cmd.exe

    运行以下命令来构建您自己的镜像(每个命令都需要很长时间):
docker pull mcr.microsoft.com/windows/server:ltsc2022 docker build -f Dockerfile -t "server-with-edge:ltsc2022" .

    运行新的 docker 镜像并进行操作:
docker run -it server-with-edge:ltsc2022 cmd.exe

这个 docker 镜像的大小仍然很大,为 10.4GB。

在 Linux 容器中构建您自己的 Windows(最难)

这有点疯狂,但在 Linux docker 实例中,您可以使用虚拟化来安装 Windows 的全新副本,默认情况下您将在其中安装 Edge。

说明在这里

我没有尝试这个,因为我假设这个方法一定非常慢,特别是因为我首先在 WSL 中运行 Linux 容器。它还需要额外的 Windows 许可证密钥来安装 Windows 等。我不想处理所有这些。


-1
投票
据我所知,有 Chrome 和 Firefox 的 Docker 镜像,但没有 IE 或 Microsoft Edge 的镜像。您可以从

此处添加反馈。

目前,作为临时解决方法,您可以尝试使用Chrome和Firefox进行selenium测试。请查看 README

https://github.com/SeleniumHQ/docker-selenium

我也会尝试提交有关此问题的反馈。如果我得到任何解决方案或解决方法,我会尽力在将来为您提供。感谢您的理解。

© www.soinside.com 2019 - 2024. All rights reserved.