主要分两步吧,第一步:安装docker和docker compose搭建起来hub-node结构
第二步:搭建selenium和python3控制脚本的环境
提取码:la9p
jdk安装
一般来说centos7自带了jdk,不用安装,直接java --version查看版本就行了,一般是1.8版本。
如果没有自带,参考jdk离线安装
也可以在线安装openjdk
拉取镜像
安装docker,同样来说centos7自带了docker,直接docker version查看版本确认是否有自带docker,如果没有在线安装具体参考安装docker,docker不太推荐离线安装,如果是个人使用的话,离线安装真的是会很麻烦且各种出错。安装成功但是没有设置开机自启动的话,使用命令sudo systemctl start docker启动。
安装无误后拉取三个镜像
docker pull selenium/hub
docker pull selenium/node-firefox-debug
docker pull selenium/node-chrome-debug
拉取后使用docker images命令查看是否拉取成功
如果需要离线安装,将拉取到的镜像用docker save打包成tar包,通过拷贝的形式在新机器load进去即可使用。
docker save -o hub.tar selenium/hub
docker save -o chrome.tar selenium/node-chrome-debug
docker save -o firefox.tar selenium/node-firefox-debug
docker load < hub.tar
docker load < chrome.tar
docker load < firefox.tar
再次使用docker images查看是否多出了三个镜像
拷贝docker compose二进制文件到/usr/local/bin目录下
sudo chmod +x /usr/local/bin/docker-compose
此处需要提供root用户密码
创建指向/usr/bin的符号链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试安装
docker-compose --version
可以看到版本信息
测试环境的主机上初始化 Swarm mode,生成出一个 token,该主机便成为 Swarm mode 的 manager node.
docker swarm init
接下来我们需要部署配置文件 docker-compose.yml(就用我提供的),里面需要构建三个服务,分别名字为 hub,firefox,chrome。
//此命令是创建命令,--compose-file是指定yml文件位置,此处用的相对路径,
//selenium是名称,比如你的名称是selenium,那么你刚才yml文件
//定义的网络private,名字就成了selenium_private
docker stack deploy --compose-file=./docker-compose.yml selenium
//此命令是运行docker,selenium_chrome=3是指定谷歌浏览器节点的数量
selenium_firefox是火狐的数量
docker service scale selenium_chrome=3 selenium_firefox=3
//以下是查看docker启动情况的命令
docker service ls
docker stack ps selenium
如果查看到节点已经启动,还可以打开浏览器访问http://localhost:4444/grid/console
查看详细情况
//在调试的时候如果不删除刚才创建的同名服务会报错,使用以下命令删除刚才创建的selenium
docker stack rm selenium
如果这一步没问题了,就可以进行步骤二
直接安装python3和chrome,依赖会自动配置
步骤二安装之前需要安装一些依赖,新建两个文件夹叫yilai和chromeyilai,里边放rpm文件,参考我百度云,然后在两个目录下分别执行 rpm -Uvh ./*.rpm --nodeps --force
yilai
chromeyilai
推荐py3.6
tar -zvxf python-3.6.x.tgz
mkdir usr/local/python3
cd python-3.6.x
#在安装python的时候,使用--prefix指定安装路径即可
./configure --prefix='/usr/local/python3'
sudo make
sudo make install
#需要配置环境,可以加到环境里面.bashrc
export PATH=/usr/local/python3/bin:$PATH
source ~/.bashrc
创建python3/pip3软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
安装完成后python3
或者python3 --version都行,能看到版本就成功了。
解压
tar -zvxf selenium-3.14.0.tar.gz
进入目录
cd selenium-3.14.0/
可以使用ls查看目录下的文件,然后使用下方命令安装
python3 setup.py install
安装不报错完成后可以再打开终端,输入python3进入python交互环境,输入import selenium
看看不报错就可以了
下载chrome和firefox的driver
将其复制到/usr/bin目录下
cp chromedriver /usr/bin/
sudo chmod 777 chromedriver
配置完成chromedriver --version查看到版本就是成功了。
如果是离线安装大概是缺这些依赖
libXss.so.1()(64bit) is needed by google-chrome-stable-81.0.4044.122-1.x86_64
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-81.0.4044.122-1.x86_64
liberation-fonts is needed by google-chrome-stable-81.0.4044.122-1.x86_64
libvulkan.so.1()(64bit) is needed by google-chrome-stable-81.0.4044.122-1.x86_64
总共四个依赖,如果有网,那么直接yum估计都能装,但是无法联网,rpm安装缺少依赖的情况下,我想了一个两个办法如下:
一、还是考虑放一些依赖,虽然找不全,但是在放入一部分依赖和安装时设置跳过缺少的依赖,安装完应该也能用。
这里提到的依赖就是上边说的chromeyilai文件夹下放的rpm文件,而且我 们在上边已经执行安装了,因此执行安装如下
需要先进到放浏览器rpm的目录下
sudo rpm -ivh google-chrome-stable_current_x86_64.rpm --nodeps
不出意外,执行查看版本命令
google-chrome-stable --version
可以看到版本号,如果看到了版本号,那么就可以对着chromedriver的版本看看是不是对应了。
如果安装不成功,执行以下命令卸载
sudo rpm -e --nodeps google-chrome-stable
sudo yum localinstall google-chrome-stable_current_x86_64.rpm
如果这两个方法安装google浏览器没成功,那我估计是没办法了,考虑换个ubuntu系统什么的,因为ubuntu使用dpkg离线安装不会出现缺少依赖的问题。
如果好学的你还想配firefox,那么一般系统也是自带firefox了,可用firefox --version来查看版本,如果没有就自己装,然后查看firefox和geckdriver的版本对应,geckdriver下载同chromedriver的地址。
以上都配置好之后可以尝试python3控制hub-node进行访问了
运行hub_ctl2.py(需要提供三个参数,分别是任务数量和主机ip)
grid的网页标题。也证明控制访问成功。
因为(火狐在centos7的root权限下使用有问题,所以就不用firefox了,只用chrome,那么对应上边compose的时候也就不用启动firefox的节点了。)
当然上边这两大步都成功了,就证明你这完整的搭建流程成功了,这时就可以使用我写的脚本自动化测试了,直接运行test.sh文件。