配置selenium grid

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试。

运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为61,Firefox版本为55,

1. Selenium Grid简介

Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试。

通常,以下两种情况会需要使用Selenium Grid:

1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同操作系统的浏览器中进行测试

2) 测试用例较多时,可以通过分布式测试减少测试执行时间

2. Selenium Grid结构

Selenium Grid由一个中心hub及多个节点node组成(类似于其他分布式系统的matser-slave),其中hub用来管理各个node的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求再转发给node来执行。

3. 环境准备

由于Selenium Grid的hub及node启动时需要java环境,所以首先需要安装JDK。

3.1 JDK环境

1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. 选择Java SE 8u151/ 8u152,点击JDK下载

3. 安装下载的JDK

4. 配置系统环境变量

3.2 selenium-server-standalone下载

1. selenium-release官网地址:http://selenium-release.storage.googleapis.com/index.html

2. 下载与本机selenium 3.5.0匹配的版本:selenium-server-standalone-3.5.0.jar

2. 拷贝selenium-server-standalone-3.5.0.jar至本地工作目录下,如c:\grid

3.3 webdriver下载

3.3.1 IE

1) 还是在刚才的页面:http://selenium-release.storage.googleapis.com/index.html?path=3.5/

2) 下载与selenium版本、系统均匹配的IEDriver版本:IEDriverServer_Win32_3.5.0.zip

3.3.2 Chrome

1) 下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

2) 下载与系统及浏览器版本匹配的driver版本:chromedriver_win32.zip

3.3.3 Firefox

1) 下载地址:https://github.com/mozilla/geckodriver/releases

2) 下载与系统及浏览器版本匹配的driver版本:geckodriver-v0.19.1-win64.zip

driver下载完成解压后,分别拷贝IEDriverServer.exe,geckodriver.exe,chromedriver.exe至Python安装路径(如C:\Python27\)下即可

4. Selenium Grid启动

4.1 启动hub

hub启动命令如下:

java -jar selenium-server-standalone-3.5.0.jar -role hub

其中 -role指定角色为hub,通过下图可以看到:hub已使用默认4444端口启动成功,且node可以通过http://localhost:4444/grid/register/进行注册

4.2 启动node

node启动命令可以使用下面两个钟的任意一个:

java -jar selenium-server-standalone-3.5.0.jar -role node -port 5555 -hub http://localhost:4444/grid/register

其中 -role指定角色为node, -port指定端口为 5555, -hub指定连接hub地址,通过下图可以看到node已成功连接hub

或者使用下面的命令:

java -jar selenium-server-standalone-3.5.0.jar -role node

同理我们另外启动两个 node(使用端口号分别为5556/5557):

java -jar selenium-server-standalone-3.5.0.jar -role node -port 5556 -hub http://localhost:4444/grid/register
java -jar selenium-server-standalone-3.5.0.jar -role node -port 5557 -hub http://localhost:4444/grid/register

此时打开页面http://localhost:4444/grid/console,可以看到我们启动的三个node:

4.3 更好的启动方法 — bat脚本

1. 新建一个文件selenium_grid.bat,写入我们刚才启动hub及node的命令:

cd /d D:\grid
start java -jar selenium-server-standalone-3.5.0.jar -role hub
start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5555 -hub http://localhost:4444/grid/register
start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5556 -hub http://localhost:4444/grid/register
start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5557 -hub http://localhost:4444/grid/register

1) 第一行是进入并修改当前目录为存放 selenium-server-standalone-3.5.0.jar的目录:D:\grid

2) 后面三行stat java...是分别打开新的cmd窗口用以启动hub及node

2. 双击selenium_grid.bat即可启动hub及node

下面,我们编写一个Selenium Grid自动化测试脚本,分别在3个node上运行Chrome,Firefox及IE浏览器,执行WEB页面自动化测试。

示例脚本如下:

例子一:

使用remote的方式来测试自动运行浏览器:

from selenium.webdriver import Remote

driver = Remote(command_executor= ‘http://192.168.87.1:4444/wd/hub‘,  #command_executor参数格式是固定的
                desired_capabilities= {‘platform‘:‘ANY‘,
                                       ‘browserName‘:‘chrome‘,        #这个desired_capabilities参数格式也是固定的
                                       ‘version‘:‘‘,
                                       ‘javascriptEnable‘:True
                                       }
                )

driver.get(‘http://www.baidu.com‘)
driver.find_element_by_id(‘kw‘).send_keys(‘remote‘)
driver.find_element_by_id(‘su‘).click()

例子二:

我们分别在本机上开启了一个hub 和3个node: 来测试自动运行浏览器

 1 lists = {‘http://192.168.87.1:4444/wd/hub‘:‘chrome‘,
 2          ‘http://192.168.87.1:5555/wd/hub‘: ‘firefox‘,
 3          ‘http://192.168.87.1:5556/wd/hub‘: ‘firefox‘}
 4
 5 for host,browser in lists.items():
 6     print host,browser
 7
 8     driver = Remote(command_executor=host,
 9                     desired_capabilities={‘platform‘:‘ANY‘,
10                                           ‘browserName‘:browser,
11                                           ‘version‘:‘‘,
12                                           ‘javascriptEnabled‘:True}
13                     )
14
15     driver.get(‘http://www.baidu.com‘)
16     driver.find_element_by_id(‘kw‘).send_keys(browser)
17     driver.find_element_by_id(‘su‘).click()

例子三:实现在远程的node上运行测试用例

要想在其他主机上启动node,则必须满足下面的条件:

(1).本地的hub主机必须与远程的node主机之间可以用ping联通.我用的是虚拟机 需要注意一点的是 需要关闭防火墙才可以ping通对方,否则会不通.

(2)远程主机必须安装浏览器和webdriver驱动 并且要放在环境变量path目录下

(3).远程主机必须要安装java环境,并且还需要讲selenium server的jar包放在远程主机本地目录下,因为在调用远程node主机的时候需要在远程主机上运行node

(4).也要安装python环境

操作步骤:

1.启动本地hub主机(本机IP地址为:192.168.87.1)

2.启动远程node主机(远程主机ip地址为:192.168.31.128)

设置端口号为5556,指向的hub为主机IP地址:192.168.87.1

3.修改远程主机的ip地址和端口号,在远程主机上的firefox和Chrome上运行脚本

lists = {‘http://192.168.31.128:5556/wd/hub‘:‘chrome‘,
         ‘http://192.168.31.128:5555/wd/hub‘: ‘firefox‘,
         ‘http://192.168.87.1:4444/wd/hub‘: ‘firefox‘}

for host,browser in lists.items():
    print host,browser

    driver = Remote(command_executor=host,
                    desired_capabilities={‘platform‘:‘ANY‘,
                                          ‘browserName‘:browser,
                                          ‘version‘:‘‘,
                                          ‘javascriptEnabled‘:True}
                    )

    driver.get(‘http://www.baidu.com‘)
    driver.find_element_by_id(‘kw‘).send_keys(browser)
    driver.find_element_by_id(‘su‘).click()

现在再来运行脚本,会发现在远程主机上可以看到脚本被运行.

时间: 2024-11-05 18:57:08

配置selenium grid的相关文章

Python+Selenium笔记(十一):配置selenium Grid

(一) 前言 Selenium Grid可以将测试分布在若干个物理或虚拟机器上,从而实现分布方式或并行方式执行测试. 这个链接是官方的相关说明. https://github.com/SeleniumHQ/selenium/wiki/Grid2 (二) Selenium Grid 大概就是这个意思(一个中心节点(HUB),N个子节点(NODE,操作系统+浏览器)) (三) 环境配置 1. 前提:已经配置相应的 JDK环境(LINUX自带JDK环境(我装的LINUX自带的是1.8),WINDOWS

Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做一个总结吧,希望能给大家带来启发和帮助.由于业界没有成熟的解决方案可供参考,本人在研究过程中也是摸着石头过河,纰漏之处在所难免,如果大家有更好的方案,敬请不吝赐教. 分布式并行执行用例需求背景 公司的产品属于web app,采用的是Robot Framework + Selenium2Library

selenium Grid(一)

selenium grid Quick Start selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成.hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行. 1.启动Selenium-Server 1)下载 selenium-server-standalone-*.jar,地址:http://selenium-release.storage.googleapis.co

Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities

Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities [{platform=WINDOWS, ensureCleanSession=true, ignoreProtectedModeSettings=true, ignoreZoomSetting=true, enab

Selenium Webdriver 学习总结-Selenium Grid & Webdriver(九)

QQ群: 136924235 论坛 : http://bbs.shareku.com Google教程:https://code.google.com/p/selenium/wiki/Grid2 Hub / Node 系统要求:JDK.firefox.chrome.internetExplorer 所需工具:selenium-server-standalone-xxx.jar 下载地址:http://code.google.com/p/selenium/downloads/list Start

Selenium Grid分布式测试入门详解

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为62,Firefox版本为56,IE版本为11. 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同

Selenium Grid 分布式测试入门

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为62,Firefox版本为56,IE版本为11. 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同

在解决selenium grid报错时出现tomcat启动不起来项目的问题:java.lang.UnsatisfiedLinkError:

之前.只配置了root权限的jdk启动好使, 但在修复selenium grid远程驱动后启动tomcat,报如上错误 解决办法:在启动tomcat的用户下编辑环境变量添加jdk: export JAVA_HOME=/home/web1/jdk1.7.0_79/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 解决成功:perfect 原文地址:h

Selenium Grid的使用(分布式测试)

1.Selenium Grid简介 Selenium Grid组件专门用于远程分布式测试或并发测试.使用此组件可以在一台计算机上给多台计算机(不同操作系统和不同版本浏览器环境)分发多个测试用例从而并发执行,大大提高了测试用例的执行效率,基本满足大型项目自动化测试的时限要求和兼容性要求. Selenium Grid使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多台Node计算机执行,并收集多台Node计算机执行结果的报告,汇