我试图通过连接到浏览器堆栈对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);
}
说实话,我会设置具有不同节点功能的集线器,让网格在节点之间分配,而不是在测试NG中。
这里有一篇好文章,可能会帮助您更好地理解。
https://dzone.com/articles/selenium-grid-tutorial-setup-and-example-of-cross
这里有两个问题。
只有在尝试设置浏览器/移动自动化所需的基础架构时,才会出现硒网格。当我说基础设施时我的意思是:
除了设置自动化的基础架构需求外,网格还允许您进行远程执行(以便您的本地计算机可以在浏览器上执行测试自动化操作)
如果您需要在不同的浏览器+操作系统组合上运行测试,那么TestNG套件xml可能是正确的推荐方式。
当你通过testng xml文件表达你的浏览器风味/版本/平台组合作为值,然后使用它来构建你的DesiredCapabilities
你在这里实际做的是构建英语声明“我想在firefox浏览器上运行这个测试版本66在OSX机器上运行“。
另一方面,网格旨在回答诸如此类的问题
测试的分布是Grid的责任。通过测试指定跨浏览器自动化的要求将是测试用例的责任。在这里,TestNG允许您通过测试用例指定此要求,提供各种不同的参数化方法(Suite xml文件就是这样一种方法)