搭建 Selenium 集群过程

释放双眼,带上耳机,听听看~!

点击上方“凌天实验室”,“星标或置顶公众号”

漏洞、技术还是其他,我都想和你一起分享


1

引言

什么是测试基础架构?

“ 测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。


通常来讲,测试基础架构主要包括以下内容:

  • 执行测试的机器;

  • 测试用例代码仓库;

  • 发起测试执行的 Jenkins Job;

  • 统一的测试执行平台;

  • 测试用例执行过程中依赖的测试服务,比如提供测试数据的统一测试数据平台、提供测试全局配置的配置服务、生成测试报告的服务等;

工作中用到了Selenium作为爬虫去解析网页,发现单机跑慢的要死,所以找了点资料,将官方的Selenium 集群搭建了起来,下面是搭建的过程。


2

环境介绍

系统jdk环境selenium版本安装的浏览器用途别名
Centos71.83.141.59chromeserverHub
Centos71.83.141.59chromenodeNode1
Centos71.83.141.59chromenodeNode2
Centos71.83.141.59chromenodeNode3


3

安装Hub


首先从官网上下载好最新版本的 selenium-server-standalone.jar

  • https://www.seleniumhq.org/download/


在Hub机器上执行下面的命令,运行hub管理端

screen -dmS selenium java -jar selenium-server-standalone.jar -role hub -maxSession 100 -log /var/log/selenium.log

执行以后会出现下面这样的提示


记住下面的两个URL地址:

  • http://10.10.88.51:4444/grid/register/

  • http://10.10.88.51:4444/wd/hub


第一个地址是注册node的时候回使用到,第二个地址是在代码中会用到


4

安装Node


将上面下载的jar文件复制到各个节点机器上,然后执行下面命令,注册node节点

screen -dmS selenium java -jar selenium-server-standalone.jar -role node -hub http://10.10.88.51:4444/grid/register/ -capabilities browserName=chrome,platform=linux,maxInstances=30 -log /var/log/selenium.log

记住将 -hub 后面的url地址更改为你的hub地址,执行以后会出现下面的界面

然后我们返回Hub机器上看Hub机器上回出现一条这样的提示

可以看到已经成功注册了节点机器。其他节点按照同样的方式进行注册即可。


关于其中的参数可以参考下面的文章:

  • https://github.com/SeleniumHQ/selenium/wiki/Grid2#configuring-the-nodes


5

查看web界面


在注册完node节点以后,我们可以在web界面中看到我们注册的机器的列表以及配置


我们访问Hub机器的url地址为:


http://10.10.88.51:4444/grid/console

将其中的10.10.88.51换为你hub机器的ip地址即可访问


至此我们的Selenium 集群以及初步搭建完成,接下来就是使用了


6

使用Selenium集群


这边我用python代码进行测试Selenium机器是否能正常使用


代码如下

# -*- coding:utf-8 -*-
# Author: sky
# Email: sky@03sec.com
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--hide-scrollbars')
driver = webdriver.Remote(command_executor="http://10.10.88.51:4444/wd/hub",options=chrome_options)
driver.get("https://www.03sec.com")
driver.implicitly_wait(3)
driver.find_elements_by_tag_name("div")
print(driver.page_source)
driver.quit()

其中 chrome_options 请根据自己的情况进行自定义


command_executor 为上面我们记录的第二条url地址,请自行更换

其实和平时写没有什么区别,唯一的区别就是

driver = webdriver.Remote(command_executor="http://10.10.88.51:4444/wd/hub",options=chrome_options)


这条配置



7

设置Centos7 开机启动


selenium grid 设置开机启动的命令


mkdir /opt/script
touch /opt/script/autostart.sh
echo "
#!/bin/bash
#description:启动selenium Grid
screen -dmS selenium java -jar selenium-server-standalone.jar -role hub -maxSession 100 -log /var/log/selenium.log
" >> /opt/script/autostart.sh
chmod +x /opt/script/autostart.sh
echo "su - root -c '/opt/script/autostart.sh'" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
cat /etc/rc.d/rc.local
ls -la /etc/rc.d/rc.local
cat /opt/script/autostart.sh
ls -la /opt/script/autostart.sh
echo "ok"

selenium node 设置开机启动的命令


mkdir /opt/script
touch /opt/script/autostart.sh
echo "
#!/bin/bash
#description:启动selenium节点
screen -dmS selenium java -jar selenium-server-standalone.jar -role node -hub http://selenium-grid 服务器IP:4444/grid/register/ -capabilities browserName=chrome,platform=linux,maxInstances=30 -maxSession 60 -log /var/log/selenium.log
" >> /opt/script/autostart.sh
chmod +x /opt/script/autostart.sh
echo "su - root -c '/opt/script/autostart.sh'" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
cat /etc/rc.d/rc.local
ls -la /etc/rc.d/rc.local
cat /opt/script/autostart.sh
ls -la /opt/script/autostart.sh
echo "ok"


8

安装中遇到的问题

可能会有中文乱码的问题,在centos7下安装下中文字体库即可

yum groupinstall fonts



9

总结


集群安装以后,使用和平时没什么两样,速度也差不多。如果你是单机单进程跑,没必要使用集群。如果涉及到多进程或者多线程这样的话,Selenium集群才能真正发挥作用。

hub端传入的timeout会同时设置到节点上(应该)


10

参考


  • https://github.com/SeleniumHQ/selenium/wiki/Grid2

  • https://www.seleniumhq.org/docs/07_selenium_grid.jsp



凌天
实验室

凌天实验室,是安百科技旗下针对应用安全领域进行攻防研究的专业技术团队,其核心成员来自原乌云创始团队及社区知名白帽子,团队专业性强、技术层次高且富有实战经验。实验室成立于2016年,发展至今团队成员已达35人,在应用安全领域深耕不辍,向网络安全行业顶尖水平攻防技术团队的方向夯实迈进。



“阅读原文”我们一起穿越安百信息安全资讯平台~

本文源自微信公众号:凌天实验室

人已赞赏
安全工具

Microsoft Windows DHCP Server远程代码执行漏洞(CVE-2019-0725)可开发性分析

2019-10-14 14:03:06

安全工具

聊一聊 SQLMAP 在进行 sql 注入时的整个流程

2019-10-14 14:03:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索