当前位置: 首页 > 知识库问答 >
问题:

如何使用官方硒泊坞窗图片?

袁何平
2023-03-14

我正在尝试设置一个 .NET Core 控制台应用程序,该应用程序使用硒 Web 驱动程序和 Docker 中的 Firefox,但我很难理解如何实际使用官方的硒泊坞窗映像。

目前,控制台应用程序只是一个尝试Google.com并成功报告的应用程序。

尝试创建新FirefoxDriver时,我始终收到以下错误消息:

预期的浏览器二进制位置,但无法在默认位置找到二进制,没有提供“moz:firefoxOptions.binary”功能,并且在命令行上没有设置二进制标志(SessionNotCreated)

下面是Dockerfile(由我添加的VSCode Docker扩展一行生成,现在注释掉了):

FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["MyAppName.csproj", "./"]
RUN dotnet restore "./MyAppName.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyAppName.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "MyAppName.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .

# FROM selenium/standalone-firefox-debug ## where does this go?

ENTRYPOINT ["dotnet", "MyAppName.dll"]

我尝试在不同的位置插入selenium独立图像,尝试从'/bin/bash/'入口点开始,尝试查找Firefox是否真的在图像中(它似乎不是,不在常规位置)。它仍然抛出异常。

我真正想要的是在我的容器中安装Firefox,以便我可以运行我的。NET Core控制台应用程序,但根据一些谷歌搜索,最简单的方法应该是通过selenium图像。

如何正确使用硒泊坞窗映像?

共有1个答案

姜旭
2023-03-14

回答我自己的问题,以防万一其他刚接触 Docker 的人遇到同样的问题,最终就到了这里。

我想通了。

更好的方法是使用docker compose运行3种不同的服务:我的C#脚本、selenium hub服务和SeleniumFirefox节点。(你可能只需要一个脚本和一个selenium firefox独立图像就可以做到这一点,但我只是发布了第一个对我有用的东西。稍后会尝试其他东西)

我将< code > FROM selenium/standalone-Firefox-debug 语句从我的。NET核心控制台App Dockerfile然后把下面的< code>docker-compose.yml文件放在和我的Dockerfile同一个文件夹里(大部分摘自这个stackoverflow答案):

version: '2'
services:
  seltest:
    build:
      context: .
    volumes:
      - ./temp:/usr/src/app/target
    environment:
        - HUB_PORT_4444_TCP_ADDR=seleniumhub
        - HUB_PORT_4444_TCP_PORT=4444
    depends_on:
        - seleniumhub
  seleniumhub:
    image: selenium/hub
    ports:
      - 4444:4444
  firefoxnode:
    image: selenium/node-firefox-debug
    ports:
      - 5900
    environment:
        - HUB_PORT_4444_TCP_ADDR=seleniumhub
        - HUB_PORT_4444_TCP_PORT=4444

在我的C#脚本中,我现在必须进行一些更改。我必须将我的远程Web驱动程序连接到正确的URI:

IWebDriver driver = new RemoteWebDriver(new Uri("http://seleniumhub:4444/wd/hub"), firefoxOptions);

(seleniumhub:4444因为我在docker-compose.yml中创建的服务的名称是seleniumhub,4444是为这个服务打开的端口)

而且,由于 docker-compose 中的depends_on只等待服务启动,直到它们“准备就绪”,所以我采用了一种黑客方法,确保在我尝试使用它们之前,硒集线器和 firefox 服务已准备就绪,只是做了一个:

Thread.Sleep(10000);

在调用远程webdriver之前。如果我不这样做,那么我会在尝试调用webdriver时出现以下错误:

未处理的异常:OpenQA.Selenium.WebDriverException:抛出具有空响应的异常,向远程WebDriver服务器发送HTTP请求以进行URL http://seleniumhub:4444/wd/hub/session。异常的状态为“未知错误”,消息为:连接被拒绝 连接拒绝---

然后,我只需从命令行运行 docker compose 来启动服务,我就可以验证我的 C# 脚本是否成功 https://www.google.com。

似乎整体可以在许多方面进行优化,但对我来说,概念验证已经完成!

 类似资料:
  • 问题内容: 我正在docker容器内的GCE上运行jenkins实例,并希望从此Jenkinsfile和Github执行多分支管道。我正在为此使用GCE詹金斯教程。这是我的 我总是得到一个错误: 为了使docker在jenkins中工作,我需要更改什么? 问题答案: 看起来像DiD(Docker中的Docker),最近的一期杂志指出这是有问题的。 请参阅“ 在您的CI或测试环境中使用Docker-

  • 我安装了cron和 登录docker镜像 没有正在运行 我想我必须做点什么来启动cron服务器。 我怎么能这样做??

  • 我在windows 10 home上工作。 当我运行docker快速启动终端快捷方式或直接运行 start.sh 时,我收到消息: Docker Machine未安装。请重新运行工具箱安装程序,然后重试。看起来“查找vboxmanage.exe”步骤出错…按任意键继续。。。 我尝试重新安装,选择了所有选项,包括NDIS5驱动程序,但我没有帮助。运动学工作正常,但我无法在终端中运行docker。 我

  • 我一直在使用minikube在本地测试库伯内特斯,在minikube中,我们可以通过使用命令来使用本地docker镜像。 我开始探索微型k8。在运行Ubuntu 18的机器上使用快照安装microk8。 除了创建本地 docker 注册表之外,有没有办法将本地 docker 映像与 microk8s 一起使用,就像我们使用 minikube 进行测试和开发一样? 命令也不工作,它显示: 命令‘mi

  • 我想在捕获屏幕时用< code>ffmpeg录制音频。我在使用< code>alsa时遇到的错误是,我的映像没有声卡< code>-f alsa -ac 2 -i hw:0 以下是在新版本的Ubuntu上重现的方法 在新的ubuntu docker映像中启动一个会话。 安装程序 alsa(高级 Linux 声音体系结构) 列出声卡 播放此声音将失败,因为此图像没有任何声卡

  • 问题内容: 我想在使用Selenium WebDriver和Docker而不是虚拟机的同一台计算机上运行多个Internet Explorer版本。据我所知,Docker完全在Linux上运行,这将使Docker中的IE无法实现。我之所以问是因为我看到Docker在Microsoft Azure上运行。 问题答案: Docker当前不适用于基于Windows的应用程序。Azure上的Docker是