在testng.xml中提及如下的参数标记:
<parameter name="browser" value="Firefox"></parameter>
并使用以下代码:
@Parameters({"browser"})
public void test(String browser){ ... }
我们可以为特定浏览器实例化webdriver对象,并在该浏览器上运行Selenium测试。
但是我们如何使用Selenium + Maven实现相同目标?我的意思是在testng.xml或pom.xml中提到浏览器名称。
为了达到这个目的,我从http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html开始了指定测试参数部分,但我并不了解如何将Maven中的参数传递到TestNG测试中。< / p>
有人可以帮助我了解如何实现这一目标或指向我的文档/存储库,这将有助于我实现这一目标吗?
答案 0 :(得分:1)
您可以在testNG.xml中定义浏览器配置(完全如您所述),然后使用pom.xml启动它。
您无需在POM.xml中提及任何特定于浏览器的详细信息。我相信maven只需执行您提供的whatover配置的testNG文件,除非它需要外部libs / jar。
如果您在执行相同操作时遇到任何特定问题/错误,请分享详细信息。
答案 1 :(得分:1)
简短的回答是,如果您在pom.xml
中使用以下内容,则无法通过注释@Parameters
访问该值。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<systemPropertyVariables>
<propertyName>firefox</propertyName>
</systemPropertyVariables>
</configuration>
</plugin>
@Parameters
是一个概念,仅在通过TestNG套件文件传递参数或通过操作包含Map<String, String>
的{{1}}数据结构以编程方式应用时才适用。
要访问定义的系统属性,您将使用@Parameters
例如;
在测试方法中访问系统属性。
System.getProperty("propertyName");
或者在之前的步骤中访问系统属性并将其添加到TestNG数据结构中。
@Test
public void test() {
String browser = System.getProperty("browser");
}