我有一个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无法运行非无头浏览器。
答案 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