Selenium服务器可以在MacOS上使用Docker,但不能在Jenkins上使用

时间:2017-06-16 18:35:38

标签: linux selenium docker jenkins

我有一个Selenium服务器映像,我将其与Docker一起用作测试过程的一部分:

FROM selenium/standalone-firefox:3.4.0-chromium

这在MacOS本地工作,但是当我在Jenkins(linux-gnu)上运行这个Docker容器时,Selenium似乎无法工作。

我唯一的猜测是只有无头浏览器可以在Jenkins上运行。

有人知道我只能用Selenium运行无头浏览器吗?我不确定这是否有意义......但我想弄明白为什么requests to Selenium server completely timeout on Jenkins,我相信因为准系统Linux无法运行非无头浏览器。

1 个答案:

答案 0 :(得分:0)

我相信你是对的,取决于你的 docker 容器的配置,Linux docker 只能在 headless 模式下运行。这是我正在做的设置:

stage ("Run Regression") {  
    def runTestsCommand = "dotnet test ${solutionName}/${projectName}.csproj"
                    
   def runTests =  """
          if [ -f "/usr/bin/chromedriver" ]; then
              export CHROMEDRIVER_FILEPATH=/usr/bin/chromedriver
          fi
          export NODE_ENV=jenkins
          export NO_COLOR=1
          export IP=127.0.0.1

          ${runTestsCommand}
          """    
      executeBatOrSh(runTests)
  
}

这是我的 Docker 文件中的一个示例,我在其中添加了 Chromium 来运行测试:

# Regression needs chromium
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& echo "http://dl-cdn.alpinelinux.org/alpine/v3.11/main" >> /etc/apk/repositories \
&& apk upgrade -U -a \
&& apk add \
    libstdc++ \
    chromium \
    chromium-chromedriver \
    harfbuzz \
    nss \
    freetype \
    ttf-freefont \
&& rm -rf /var/cache/* \
&& mkdir /var/cache/apk