Selenium grid or TestNG XML for parallel cross browser testing

时间:2019-04-08 13:02:45

标签: selenium selenium-webdriver testng selenium-grid

I am trying to do some cross browser testing on selenium by connecting to browser stack so that I can test on multiple browsers at the same time.

At the moment I am using a testng xml file to set up my browsers for testing (see code below) and running my tests from there in parallel.

I will possibly be doing this for at least 15 different browser/device types and was wondering if it is a good idea to continue using this approach. Or will selenium grid be better? Any suggestions will be appreciated :)

testng xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="test.java" verbose="1" annotations="JDK" parallel="tests" >
    <test name="Test - Chrome">
        <parameter name="browser" value="chrome"/>
        <parameter name="browserVersion" value="74.0 beta"/>
        <parameter name="os" value="OS X"/>
        <parameter name="osVersion" value="Mojave"/>
        <parameter name="resolution" value="1024x768"/>
        <classes>
            <class name="EndToEnd"/>
        </classes>
    </test>

    <test name="Test - Firefox">
        <parameter name="browser" value="firefox"/>
        <parameter name="browserVersion" value="66"/>
        <parameter name="os" value="OS X"/>
        <parameter name="osVersion" value="Mojave"/>
        <parameter name="resolution" value="1024x768"/>
        <classes>
            <class name="EndToEnd"/>
        </classes>
    </test>
</suite>

set up class:

@BeforeTest
    @Parameters({"browser", "browserVersion", "os", "osVersion", "resolution"})
    public void setUp(String browser, String browserVersion, String os, String osVersion, String resolution) throws Exception
    {
        DesiredCapabilities capability= new DesiredCapabilities();
        capability.setCapability("browser", browser);
        capability.setCapability("browser_version", browserVersion);
        capability.setCapability("os", os);
        capability.setCapability("os_version", osVersion);
        capability.setCapability("resolution", resolution);
        capability.setCapability("browserstack.local", "true");
        capability.setCapability("browserstack.localIdentifier", "Test123");
        driver = new RemoteWebDriver(new URL(URL), capability);
    }

2 个答案:

答案 0 :(得分:0)

说实话,我将为集线器设置不同的节点功能,只是让网格将其分布在节点上,而不是在测试NG中使用它。

这里有一篇很好的文章,可能有助于您更好地理解。

https://dzone.com/articles/selenium-grid-tutorial-setup-and-example-of-cross

答案 1 :(得分:0)

这里的问题分为两部分。

仅当尝试设置浏览器/移动自动化所需的基础结构时,硒网格才会出现。当我说基础设施时,我的意思是:

  1. 浏览器版本和版本/移动设备版本和版本
  2. 操作系统版本

除了设置自动化的基础架构需求之外,网格还使您可以执行远程执行(这样就可以使本地计算机从在浏览器上执行测试自动化操作中解放出来)

如果您需要在不同的浏览器+操作系统组合上运行测试,那么TestNG suite xml也许是正确且推荐的方法。

当您通过testng xml文件将浏览器的风味/版本/平台组合表示为值,然后使用该值来构造DesiredCapabilities时,您在这里实际上要做的是构造英语语句“我想在OSX计算机上运行的firefox浏览器版本66上运行此测试。”

另一方面,网格旨在回答

之类的问题。
  1. 我可以运行旨在在OSX计算机上运行的firefox浏览器66版上运行的测试。
  2. 我目前没有与我关联的任何计算机,可以在Windows 10上支持Internet Explorer(因为我没有与之类似的计算机)

测试的分发是Grid的责任。 通过测试指定跨浏览器自动化的要求将由测试用例负责。在这里,TestNG使您能够通过测试用例来指定此要求,方法是提供各种不同的意图参数化方法(Suite xml文件就是这样一种方法)