尝试使用selenium docker图像'selenium / standalone'进行nto dockerise selenium End2End测试时,我收到错误:从selenium服务器检索新会话时出错连接被拒绝! selenium服务器是否已启动? ye selenium服务器根据控制台输出启动..有什么想法?
FROM selenium/standalone-chrome
USER root
# installing node
RUN apt-get update
RUN apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash
RUN apt-get install -y nodejs
RUN node -v
RUN npm -v
# Installing Yarn
#RUN rm -r /usr/local/bin/yarn
RUN npm install -g -y yarn
ENV PATH $PATH:/usr/local/bin/yarn
#copying files
WORKDIR /app
COPY . .
# debug
RUN ls -alh .
#installing yarn
RUN yarn install
EXPOSE 4444
RUN yarn
CMD yarn test
答案 0 :(得分:2)
问题是你解决这个问题的方法。看你是从selenium/standalone-chrome
继承你应该运行Selenium浏览器的图像。现在是这个图像,您正在添加测试并指定CMD来运行测试。
当您构建并启动此图像时,您无法获得任何浏览器,因为您已重写CMD以运行测试。当我们构建docker时,我们将依赖服务保存在不同的容器中。在大多数情况下,最好每个容器运行1个服务/进程。在您运行测试的情况下,浏览器服务器进程丢失,这就是拒绝连接的原因。
所以你需要在这里运行两个容器。一个用于selenium/standalone-chrome
,一个用于测试。
此外,您的图片应该继承自节点:而不是来自selenium chrome图片。构建图像时,您不应该有node -v
和npm -v
命令。他们在最终图像中创建了额外的图层
FROM node:7
USER root
# installing node
RUN apt-get update && apt-get install -y curl
# Installing Yarn
RUN npm install -g -y yarn
ENV PATH $PATH:/usr/local/bin/yarn
#copying files
WORKDIR /app
COPY . .
# debug
#installing yarn
RUN yarn install
RUN yarn
CMD yarn test
现在您需要创建一个docker-compose文件来运行包含测试和chrome的组合
version: '3'
services:
chrome:
image: selenium/standalone-chrome
tests:
build: .
depends_on:
- chrome
安装docker-compose
并运行docker-compose up
命令以运行上述组合。同样在您的测试中,请确保将URL用作http://chrome:4444/wd/hub
并使用远程webdriver而不是本地驱动程序。
答案 1 :(得分:0)
我使用了selenium / node-chrome图像,但解决这个问题的方法是确保我的chromedriver + selenium服务器+夜间监视器设置为我的package.json中的最新版本