码迷,mamicode.com
首页 > 其他好文 > 详细

配置selenium grid

时间:2017-11-26 00:48:47      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:安装python   ges   请求   png   简介   下载   alt   分布   javase   

本文对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环境

2. 选择Java SE 8u151/ 8u152,点击JDK下载
3. 安装下载的JDK
4. 配置系统环境变量
 

3.2 selenium-server-standalone下载

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

2) 下载与selenium版本、系统均匹配的IEDriver版本:IEDriverServer_Win32_3.5.0.zip
技术分享图片

3.3.2 Chrome

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

3.3.3 Firefox

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()

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

配置selenium grid

标签:安装python   ges   请求   png   简介   下载   alt   分布   javase   

原文地址:http://www.cnblogs.com/stephenmc/p/7892878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!