搭建 Selenium 集群过程

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

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

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


1

引言

什么是测试基础架构?

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


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

  • 执行测试的机器;

  • 测试用例代码仓库;

  • 发起测试执行的 Jenkins Job;

  • 统一的测试执行平台;

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

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


2

环境介绍

系统 jdk环境 selenium版本 安装的浏览器 用途 别名
Centos7 1.8 3.141.59 chrome server Hub
Centos7 1.8 3.141.59 chrome node Node1
Centos7 1.8 3.141.59 chrome node Node2
Centos7 1.8 3.141.59 chrome node Node3


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管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索