【问题标题】:Testing browsers simultaneously; receiving error同时测试浏览器;接收错误
【发布时间】:2015-11-26 21:52:00
【问题描述】:

现在,我正在尝试进行我的第一个测试,该测试将并行测试浏览器 Chrome、Firefox、IE 和 Safari。但是我得到的以下错误是:

配置失败:@BeforeMethod beforeMethod org.testng.TestNGException: @Configuration 在方法 beforeMethod 上需要参数“browser”,但>尚未标记为 @Optional 或已定义

我正在使用带有 JAVA 语言的 Selenium、TestNG 和 Maven。 XML 测试套件文件和 java 文件在目录中的同一个文件夹中。我在网上找到的测试套件 XML 文件如下(类名值设置为正确的包和类名):

<?xml version="1.0" encoding="UTF-8"?>
<DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="2" parallel="tests">
 <test name="ChromeTest">
  <parameter name="browser" value="chrome" />
    <classes>
        <class name="com.sqa.ts.multiBrowser.BrowserTest">
        </class>
    </classes>
 </test>
 <test name="FirefoxTest">
    <parameter name="browser" value="firefox" />
    <classes>
        <class name="com.sqa.ts.multiBrowser.BrowserTest">
        </class>
    </classes>  
 </test>
 <test name="IETest">
    <parameter name="browser" value="ie" />
     <classes>
        <class name="com.sqa.ts.multiBrowser.BrowserTest">
        </class>
     </classes>
 </test>
 <test name="SafariTest">
    <parameter name="browser" value="safari" />
    <classes>
        <class name="com.sqa.ts.multiBrowser.BrowserTest">
        </class>
    </classes>
 </test>
</suite>

下面是我打开浏览器以确保它能够运行并通过的代码:

package com.sqa.ts.multiBrowser;

import java.net.MalformedURLException;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.safari.SafariDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class BrowserTest {

  private WebDriver driver;

  @Test
  public void testCaseOne() {
    driver.get("http://www.google.com");
    driver.close();
  } 

  @BeforeMethod
  @Parameters("browser")
  public void beforeMethod(String browser) throws MalformedURLException {
    if (browser.equalsIgnoreCase("chrome")) {
        System.setProperty("webdriver.chrome.driver", "C:/Users/Trevor/workspace/BrowserTest/drivers/chromedriver.exe");
        driver = new ChromeDriver();

    } else if (browser.equalsIgnoreCase("firefox")) {
        driver = new FirefoxDriver();

    } else if (browser.equalsIgnoreCase("ie")) {
        System.setProperty("webdriver.ie.driver", "C:/Users/Trevor/workspace/BrowserTest/drivers/IEDriverServer.exe");
        driver = new InternetExplorerDriver();

    } else if (browser.equalsIgnoreCase("safari")) {
        driver = new SafariDriver();
    }
}

  @AfterMethod
  public void afterMethod() {
    driver.quit();
  }

}

如果有人可以让我了解导致此问题的原因,我将不胜感激。谢谢。

【问题讨论】:

  • 将@Parameters("browser") 放在@BeforeMethod 之前是否可以解决您的问题?
  • 以上两个文件似乎绝对没有问题,因为我复制了这些文件,因为它是在我的 maven 设置中。它同时调用 Chrome、IE、Firefox。
  • 你是如何运行测试的?只有当您Run as TestNG Test 时,您才会收到上述错误。尝试以TestNG SuiteMaven Test 运行它。
  • 谢谢@mk08,运行TestNG Suite 让测试开始工作。 :)
  • @Tscott:太好了!检查下面Sighil的答案。如果你想让它通过 Maven 运行一切,你最终会需要它!

标签: java xml maven selenium testng


【解决方案1】:

看起来您缺少 pom.xml 中的 testNG 配置

<build>
    <plugins>
        <!-- Following plugin executes the testng tests -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19</version>
            <configuration>
                <!-- Suite testng xml file to consider for test execution -->
                <suiteXmlFiles>
                    <suiteXmlFile>src/test/java/com/sqa/ts/multiBrowser/testng.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
</build>

运行 mvn clean installmvn clean install 应该运行测试用例。希望这对您有所帮助。

【讨论】:

  • 我会试试这个。我不知道你可以在 pom.xml 文件中做这样的事情。我认为您真的可以更新依赖项或库。
  • Maven 是一个有很多插件的构建工具......它不仅仅用于依赖管理。
【解决方案2】:

看起来像以 Run as > Testng Suite 的形式执行 XML 文件。这就是我的问题的解决方法。

【讨论】:

    【解决方案3】:

    它与 option = Run as > Testng Suite 一起使用

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多