0

我想在不同的浏览器中运行黄瓜功能;所以,现在我可以在并行 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 方法

4

1 回答 1

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 与多个浏览器一起工作。

于 2018-04-11T11:39:56.110 回答