背景
我正在尝试创建一个独立的 selenium Windows 容器,以便我们可以在 Microsoft Edge 上运行 e2e 测试。为此,我需要在容器中安装 Microsoft Edge。老实说,微软不会以任何形式发布 Edge。他们仅将 Edge 与 Windows 预打包。
不幸的是,Edge 并未预先打包在任何 Windows 容器中。我通过添加:
RUN powershell (Get-AppxPackage Microsoft.MicrosoftEdge).Version
到我的 .Dockerfile
来验证这一点,无论标签和图像如何,它总是空的。
具体问题
我想知道是否有人知道我在哪里可以找到至少半官方的 Edge 安装程序。到目前为止,我在网上或任何包管理器中都没有找到一个。
一般问题
如果您无法回答上述问题,但知道在 Windows 容器中安装 Microsoft Edge 的不同方法,请分享。
现在实际上有一个带有 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 驱动程序。”
截至 2023 年,比发布此问题时有更多方法可以做到这一点:
小提示:要查看 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
不幸的是,有一些缺点:
按照此处的说明,我能够创建一个 Windows 容器,其中包含安装了 Edge 的 Windows 的功能齐全的副本。
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 run -it server-with-edge:ltsc2022 cmd.exe
这个 docker 镜像的大小仍然很大,为 10.4GB。在 Linux 容器中构建您自己的 Windows(最难)
说明在这里。
我没有尝试这个,因为我假设这个方法一定非常慢,特别是因为我首先在 WSL 中运行 Linux 容器。它还需要额外的 Windows 许可证密钥来安装 Windows 等。我不想处理所有这些。
此处添加反馈。
目前,作为临时解决方法,您可以尝试使用Chrome和Firefox进行selenium测试。请查看 READMEhttps://github.com/SeleniumHQ/docker-selenium
我也会尝试提交有关此问题的反馈。如果我得到任何解决方案或解决方法,我会尽力在将来为您提供。感谢您的理解。