并行运行功能黄瓜

时间:2018-04-09 10:34:55

标签: testing cucumber testng selenium-grid parallel-testing

我想在不同的浏览器中运行黄瓜功能; 所以,现在我能够以并行chrome,ff和ie打开3个浏览器,但他们无法继续功能中的其他步骤!

我的方法是:

@Parameters("myBrowser")
    @BeforeClass
    @Given("^openaaaBrowser<myBrowser>$")
    public void openaaaBrowser(@Optional("optional value") String myBrowser) throws InterruptedException {
        WebDriver driver;

        if (myBrowser.equalsIgnoreCase("ie")) { 
            System.setProperty("webdriver.ie.driver","C:\\Driver\\IEDriverServer\\IEDriverServer_32bits.exe");
            driver = new InternetExplorerDriver();
        }
        if (myBrowser.equalsIgnoreCase("chrome")) { 
        System.setProperty("webdriver.chrome.driver","D:\\Drive\\chromedriver_win32\\chromedriver.exe");
        driver= new ChromeDriver();

        }
        if (myBrowser.equalsIgnoreCase("firefox")){
            System.setProperty("webdriver.gecko.driver","D:\\Drive\\geckodriver-v0.20.0-win64\\geckodriver.exe");
            driver = new FirefoxDriver();


    }}

我的testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SuiteSopraHR" parallel="tests">
<test  name="testff">
   <parameter name="myBrowser" value="firefox" /> 
    <classes>
      <class name="com.soprahr.foryou.automation.steps.StepDefinitionConnect"/>
    </classes>
  </test> <!-- Test -->
  <test  name="testie">
  <parameter name="myBrowser" value="ie" /> 
    <classes>
      <class name="com.soprahr.foryou.automation.steps.StepDefinitionConnect"/>
    </classes>
  </test> <!-- Test -->
    <test  name="testchrome">
   <parameter name="myBrowser" value="chrome" /> 
    <classes>
      <class name="com.soprahr.foryou.automation.steps.StepDefinitionConnect"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

我有那些方法

@Test(priority=1)
    @When("^Open browser$")
    public void openBrowser() throws InterruptedException {
        StepDefinition.DRIVER.get(URL);
        Thread.sleep(N_3000);
        StepDefinition.waitForJQueryProcessing(StepDefinition.DRIVER, N_30);
    }
@Test(priority=2)
    @Then("^Se connecter à l'environnement via ID '(.*)'$")
    public void letThisOneConnect(final String Id) throws Throwable {
        Thread.sleep(N_3000);

        Utilities utilities = new Utilities();
        TestCase testCase = utilities.getMyTestCase(Id);
        StepDefinition.deleteAndEnterTextById(ID_LOGIN_INPUT_4YOU, testCase.getLogInId());
        StepDefinition.deleteAndEnterTextById(ID_PASSWORD_INPUT_4YOU, testCase.getLogInPassword());
        StepDefinition.clickButtonById(ID_LOGIN_BUTTON_4OU);
    }

这里的问题我不明白为什么它不能用@test方法

1 个答案:

答案 0 :(得分:0)

如果要运行具有不同浏览器的方案,则必须多次运行方案。即如果您有3个浏览器,那么您最终会得到3个场景实例。

你无法做到的是在3个浏览器中运行一个场景。

获得并行性的最简单方法是将其从Cucumber中取出。如果您按顺序运行,则可能有

cucumber features/my_feature BROWSER=chrome
cucumber features/my_feature BROWSER=firefox
cucumber features/my_feature BROWSER=ie

现在,您可以使用CI平台在单独的实例中运行每个命令。那么你将得到你的并行性,你与Cucumber所做的就是让它使用一个环境变量来控制使用哪个驱动程序和浏览器。

您不会成功让Cucumber与特定方案实例的多个浏览器一起使用。

相关问题