利用Docker搭建Python+Selenium的自动测试环境
2018-09-18 本文已影响186人
e2f7c980cdca
前两天看一系列视频,恶补了一下Docker,而最近在搞一个Youtube网页框架上传的脚本,需要放到服务器下跑一下,发现需要的不同环境和依赖各种不同,还不如配置好Docker直接跑更方便.
这个镜像基于Python+Selenium+chromium+xvfb搭建,可以在仓库找到这个镜像,现在上传了2个版本3.7-slim和3.7-stretch
流程:
1.需要先下载ChromeDriver,因为搭建过程发现中间环节下载的会出错,所以我下载到本地导入
目前Chrome浏览器的版本是69,对应的ChromeDriver版本是2.41,文件名:chromedriver_linux64.zip
2.本地建立一个文件:xvfb-chromium
#!/bin/bash
_kill_procs() {
kill -TERM $chromium
wait $chromium
kill -TERM $xvfb
}
# Setup a trap to catch SIGTERM and relay it to child processes
trap _kill_procs SIGTERM
XVFB_WHD=${XVFB_WHD:-1280x720x16}
# Start Xvfb
Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp &
xvfb=$!
export DISPLAY=:99
chromium --no-sandbox $@ &
chromium=$!
wait $chromium
wait $xvfb
3.创建Dockerfile,这里用到的底包是python:3.7-slim,这是Python官方镜像的底包,如果要编译环境使用python:stretch
FROM python:3.7-slim
RUN apt-get update && apt-get install -y curl xvfb chromium unzip libgconf-2-4
ADD xvfb-chromium /usr/bin/xvfb-chromium
ADD chromedriver_linux64.zip /home/chromedriver_linux64.zip
RUN ln -s /usr/bin/xvfb-chromium /usr/bin/google-chrome
RUN ln -s /usr/bin/xvfb-chromium /usr/bin/chromium-browser
ENV CHROMEDRIVER_VERSION 2.41
ENV CHROMEDRIVER_SHA256 71eafe087900dbca4bc0b354a1d172df48b31a4a502e21f7c7b156d7e76c95c7
RUN echo "$CHROMEDRIVER_SHA256 /home/chromedriver_linux64.zip" | sha256sum -c - \
&& unzip "/home/chromedriver_linux64.zip" -d /usr/local/bin \
&& rm "/home/chromedriver_linux64.zip"
RUN pip install pytest selenium
WORKDIR /usr/src/app
CMD bash
4.建立一个文件夹,如image,输入命令,自动建立
docker build -t="sexjpg/py3_xvfb_chromium:3.7-slim" .
image.png
3.7-stretch搭建完成图
image.png
5.建立后,输入命令,检查搭建效果
docker run -it sexjpg/py3_xvfb_chromium:3.7-slim
效果图
image.png