Параллельное выполнение TesstNg объединяет входные тестовые данные в одном браузере - PullRequest
0 голосов
/ 25 июня 2018

У меня есть два теста в классе. При параллельном запуске TestNg он объединяет все тестовые данные и помещает их в один браузер, а другой браузер пуст.

selenium Версия: 3.8.21 Firefox: Последняя версияtestng: 6.8.21

Ниже приведен код enter image description here

package cli;

import java.net.MalformedURLException;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class test1 {
    public WebDriver driver;

    @BeforeMethod
    public void setUp() throws MalformedURLException {
        System.out.println("@BeforeMethod: The annotated method will be run before each test method.");

    }

    @Test
    public void test() throws MalformedURLException, InterruptedException {
        driver = jenkinHub.hub();
        driver.get("https://www.google.com/");
        driver.findElement(By.xpath("//*[@id=\"lst-ib\"]")).sendKeys("Testing");
        System.out.println("This is current Url " + driver.getCurrentUrl());
        Thread.sleep(9000);
        driver.quit();

    }

    @Test
    public void NotTesting() throws MalformedURLException, InterruptedException {
        driver = jenkinHub.hub();
        driver.get("https://www.google.com/");
        driver.findElement(By.xpath("//*[@id=\"lst-ib\"]")).sendKeys("Not Testing");
        System.out.println("This is current Url " + driver.getCurrentUrl());
        Thread.sleep(9000);
        driver.quit();

    }

}

xmlFile

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression Suite" verbose="1" parallel="methods" thread-count="3"> 

<test name="REgressionSuite"  group-by-instances="true">

    <classes>
    <class name="cli.test1" /> 
    </classes>
  </test>
</suite>

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Может быть, это потому, что ваш driver является полем уровня класса.Когда первый тестовый метод инициализирует его (driver = jenkinHub.hub()) и пытается использовать его, другой метод переназначает ему новое значение, поэтому все ваши действия выполняются с одним и тем же экземпляром WebDriver.
Попробуйте переместить его в тестовом методе, какэто

@Test
public void test() throws MalformedURLException, InterruptedException {

    WebDriver driver = jenkinHub.hub(); // create WebDriver instance

    driver.get("https://www.google.com/");
    driver.findElement(By.xpath("//*[@id=\"lst-ib\"]")).sendKeys("Testing");
    System.out.println("This is current Url " + driver.getCurrentUrl());
    Thread.sleep(9000);
    driver.quit();

}

@Test
public void NotTesting() throws MalformedURLException, InterruptedException {

    WebDriver driver = jenkinHub.hub(); // create another WebDriver instance

    driver.get("https://www.google.com/");
    driver.findElement(By.xpath("//*[@id=\"lst-ib\"]")).sendKeys("Not Testing");
    System.out.println("This is current Url " + driver.getCurrentUrl());
    Thread.sleep(9000);
    driver.quit();

}
0 голосов
/ 25 июня 2018

Вот пример того, как вы можете сделать это параллельно, вы можете изменить метод создания драйвера по своему усмотрению.Попробуйте это, а затем внесите соответствующие коррективы в ваш код. Он откроет два цвета и выполнит в них поиск тестового элемента, а не объединит их.

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression Suite" verbose="1" parallel="methods" thread-count="4"> 

<test name="REgressionSuite">

    <classes>
    <class name="Grid.test1" /> 
    </classes>
  </test>
</suite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...