美文网首页
Selenium Grid分布式测试环境搭建

Selenium Grid分布式测试环境搭建

作者: 羋学僧 | 来源:发表于2023-03-12 16:14 被阅读0次

一、什么是Seleiunm Grid

Selnium 有三大组件:

  • Selenium IDE :录制和调试测试用例

  • Selenium WebDrievr: 用例测试用例

  • Selenium Grid: 远程、并行执行用例

Selenium Grid允许我们在多个机器上管理浏览器及其配置,接受客户端指定,完成Web自动化测试:

  • 在客户端,可以不用安装浏览器和浏览器驱动

  • 在服务端,可以同时存在多个不同类型、不同版本的浏览器

  • 在执行用例的时候,可以读个用例并行执行

Grid不是锦上添花,而是另一种测试架构的组件

Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令转发给代理节点来执行(官方说明)

简单来说通过selenium grid可以实现一台服务器控制多台node节点机器远程执行selenium自动化测试脚本。比如自动化测试脚本存放在一台hub主机上,那么通过grid就可以控制多台node客户端来执行hub主机上的自动化测试脚本,下面我们就开始配置一下分布式测试运行环境

Seleiunm Grid应用场景

测试用例特别多,单机性能已经不足以胜任,可以提高执行效率

测试平台:平台用来管理用例,而不是执行用例,远程机器执行

跨平台测试:没有办法、只能多级测试

多浏览器X 多版本兼容性测试:单机不容易维护测试环境

二、Seleiunm Grid 部署

所有机器安装java,配置环境变量
安装浏览器,下载对应的driver

本地搭建

主要用来作为脚本的调试,让其支持Grid执行

1、环境准备

其实hub主机和node节点可以同时配置在一台物理机上,但是为了模拟真实的测试环境,准备多台真实的物理机,当然你也可以使用一台物理机+虚拟机的方式练习

1.在一台物理机上打开多个CMD客户端

2.下载selenium-server-standalone包

3.作为node节点的物理机需要配置好浏览器和对应驱动,并把驱动程序加入环境变量

4.hub主机和node主机均需要配置jdk 1.8 (切记本版,否则可能配置不成功)

2、下载selenium-server-standalone

下载好selenium-server-standalone-3.141.59.jar包

3、配置浏览器驱动

浏览器驱动配置https://npm.taobao.org/mirrors/chromedriver

4、安装JDk

安装jdk1.8,但是请注意jdk的版本

5、配置hub主机

java -jar selenium-server-standalone-3.141.59.jar -role hub -port 4444

初始化完成后,我们可以访问http://192.168.139.1:4444/grid/console来查看初始化的hub状态如图

6、配置node节点

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555

再启动一个

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5556

命令执行完毕后你会看到下面的输出信息

现在我们再次访问一下hub主机的地址看下状态

到这里,我们的分布式自动化测试环境就配置完成了,接下来开始编写我们的测试代码,看下是否能够在远程note机器上执行测试

import unittest
from selenium import webdriver

class MyTestCase(unittest.TestCase):
    def setUp(self):
        ds = {'platform': 'ANY',
              'browserName': "chrome",
              'version': '',
              'javascriptEnabled': True
              }
        self.dr = webdriver.Remote('http://192.168.139.1:4444/wd/hub', desired_capabilities=ds)

    def test_something(self):
        self.dr.get("https://www.baidu.com")
        self.assertEqual(self.dr.name, "chrome")

    def test_search_button(self):
        self.dr.get("https://www.baidu.com")
        self.assertTrue(self.dr.find_element_by_id("su").is_displayed())

    def tearDown(self):
        self.dr.quit()

if __name__ == '__main__':
    unittest.main()

相关文章

网友评论

      本文标题:Selenium Grid分布式测试环境搭建

      本文链接:https://www.haomeiwen.com/subject/iwgfrdtx.html