Docker 快速搞定 selenium grid 分布式测试

目录

前言:

NO.1 搭环境

NO.2 写代码

NO.3 并发

感想


前言:

 Docker是一个流行的容器化平台,它可以帮助开发人员快速构建、部署和运行应用程序。Selenium Grid是一个用于分布式测试的工具,它可以并行执行多个测试用例,提高测试效率和速度。结合Docker和Selenium Grid,可以快速搭建一个分布式测试环境。

以传统的方式部署分布式 Selenium Grid 集群需要耗费大量时间和机器成本来准备测试环境。

Snake 用 docker 来搭建 Selenium grid 环境,用 ptest 框架来写代码,尝试简化这个过程。

Docker 快速搞定 selenium grid 分布式测试_第1张图片

NO.1 搭环境

首先你得把 docker 加个阿里云加速器,不然那个等待是漫长的。
写个 docker-compose.yml

hub:
  image: selenium/hub
  ports:
    - "4444:4444"
firefox:
  image: selenium/node-firefox
  ports:
    - 5901:5900
  links:
    - hub
chrome:
  image: selenium/node-chrome
  ports:
    - 5902:5900
  links:
    - hub

启动起来:

docker-compose up

看起来是这样的
 

Docker 快速搞定 selenium grid 分布式测试_第2张图片


启动成功。
环境部分,就大功告成了。So easy!

NO.2 写代码

写了一个很简单的例子,用了同事写的 ptest 框架。
这个框架改进了很多市面上框架用起来不爽的地方,比如:报告,并发,写 log, 传参等。

__author__ = 'anderson'

# coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait

from ptest.decorator import TestClass, Test, BeforeMethod, AfterMethod

@TestClass(run_mode="parallel")  # the test cases in this class will be executed by multiple threads
class SeleniumClass:
    @BeforeMethod(description="Prepare test Enviroment.")
    def before(self):
        preporter.info("set up driver")
        browser = config.get_property("browser")
        if browser == "firefox":
            self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                                           desired_capabilities=DesiredCapabilities.FIREFOX)
        elif browser == "chrome":
            self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                                           desired_capabilities=DesiredCapabilities.CHROME)

    @Test(tags=["regression", "smoke"])
    def test1(self):
        preporter.info("start to test")
        self.driver.get("http://www.baidu.com")
        inputElement = self.driver.find_element_by_name("wd")
        inputElement.send_keys("docker")
        inputElement.submit()
        WebDriverWait(self.driver, 20).until(lambda driver: driver.title.startswith("docker"))
        assert_true(self.driver.title.startswith("docker"))

    @AfterMethod(always_run=True, description="Clean up")
    def after(self):
        preporter.info("cleaning up")
        self.driver.quit()

运行,得到结果:
 

Docker 快速搞定 selenium grid 分布式测试_第3张图片


Oopos, 出错了!
 

Docker 快速搞定 selenium grid 分布式测试_第4张图片


仔细看 log 和截图,原来是没有支持中文。
解决方案是: 换 docker image 源,搜到了支持中文的。
重启后再运行。

Docker 快速搞定 selenium grid 分布式测试_第5张图片


Nice!

Docker 快速搞定 selenium grid 分布式测试_第6张图片

NO.3 并发

其实第二步里面已经打开了并发。运行的时候,输入并发数就可以了。

ptest3 -t test -n 2 -Dbrowser=firefox

这里的 n 是并发数,参数是 firefox. 让 firefox 做为浏览器。(可以根据 case 数量来设定)
当然,也可以在 yml 里面多注册几个 hub, up to you!

感想

其实在这里,我都没做啥,只是做了个搬运工而已,报告,截图,并发,重跑等等,我都不用操心,只要设置几个参数就行。好的框架,能事半功倍。

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

你可能感兴趣的:(软件测试工具,软件测试,自动化测试,docker,selenium,分布式,前端,javascript,开发语言,servlet)