如何在pom.xml中提到的特定浏览器上运行Selenium + Maven测试?

时间:2014-11-18 11:53:14

标签: maven selenium testng pom.xml

在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>

有人可以帮助我了解如何实现这一目标或指向我的文档/存储库,这将有助于我实现这一目标吗?

2 个答案:

答案 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");
}