Selenium网格或TestNG XML用于并行跨浏览器测试

问题描述 投票:0回答:2

我试图通过连接到浏览器堆栈对selenium进行一些跨浏览器测试,以便我可以同时在多个浏览器上进行测试。

目前我正在使用testng xml文件设置我的浏览器进行测试(参见下面的代码)并从那里并行运行我的测试。

我可能会为至少15种不同的浏览器/设备类型执行此操作,并且想知道继续使用此方法是否是个好主意。或者硒网格会更好吗?任何建议将不胜感激:)

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>

设置课程:

@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);
    }
selenium selenium-webdriver testng selenium-grid
2个回答
0
投票

说实话,我会设置具有不同节点功能的集线器,让网格在节点之间分配,而不是在测试NG中。

这里有一篇好文章,可能会帮助您更好地理解。

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


0
投票

这里有两个问题。

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

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

除了设置自动化的基础架构需求外,网格还允许您进行远程执行(以便您的本地计算机可以在浏览器上执行测试自动化操作)

如果您需要在不同的浏览器+操作系统组合上运行测试,那么TestNG套件xml可能是正确的推荐方式。

当你通过testng xml文件表达你的浏览器风味/版本/平台组合作为值,然后使用它来构建你的DesiredCapabilities你在这里实际做的是构建英语声明“我想在firefox浏览器上运行这个测试版本66在OSX机器上运行“。

另一方面,网格旨在回答诸如此类的问题

  1. 我可以运行你想在OSX机器上运行的firefox浏览器版本66上运行的测试。
  2. 我目前没有任何与我相关的机器,可以在Windows 10上支持Internet Explorer(因为我没有像我这样的任何机器)

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

© www.soinside.com 2019 - 2024. All rights reserved.