Testng открывает только один браузер для параллельной конфигурации - PullRequest
0 голосов
/ 21 января 2019

Я хочу запустить несколько тестов в Chrome.т.е. 2 теста параллельно в 2 хром.У меня есть проект maven, определенный POM (testing.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="mytestsuite" parallel="tests" >
    <test name="case1">
        <classes>
            <class name="Testcases.hello1Test"></class>
        </classes>
    </test>

    <test name="case2">
        <classes>
            <class name="Testcases.hello2.Test"></class>
        </classes>
    </test>

</suite>

Код для вызова просмотра находится в моем baseTest :

    public hello1Page1 hellopage1;
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("prefs", chromePrefs);
    DesiredCapabilities cap = DesiredCapabilities.chrome();
    cap.setJavascriptEnabled(true);
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    cap.setCapability(ChromeOptions.CAPABILITY, options);
    chromePath = System.getProperty("user.dir") + prop.getProperty("driverrPath");
    System.setProperty("webdriver.chrome.driver", chromePath);
    driver = new ChromeDriver(options);
    driver.get(Prop.getProperty("URL"));

hellopage1 = PageFactory.initElements(driver, helloPage1.class);

Это класс страницы:

public class hello1Page extends BaseTest {
    WebDriver driver;

    public  hello1Page(WebDriver driver){
        this.driver = driver;
    }

    public hello1Page method1 {... return this;}
    public hello1Page method2 {... return this;}
}

Это класс теста:

public class hello1Test extends BaseTest
{
    @Test(priority = 0)
    public void methodT1(){
            hello1page.method1();
    }
}

У меня есть другие тесты, которые следуют этому же шаблону.

Я предполагаю, что когда я запускаю testng.xml, он должен перейти к baseTest 2 раза и открыть 2 Chrome, а затем запустить мои 2 теста в отдельном Chrome.Но почему-то этого не происходит.Он открывает только 1 браузер Chrome и запускает только 1 тест.

Обычно все работает нормально, как запуск одиночного теста с использованием команды maven, но проблема заключается в параллельном.

Ответы [ 2 ]

0 голосов
/ 23 января 2019
  • Элемент списка Попробуйте выполнить следующие шаги: -

    1. Создайте экземпляр Threadsafe Webdriver следующим образом:

      приватная статическая ThreadLocal webDriver = new ThreadLocal ();

    2. Используйте getter и setter для использования драйвера следующим образом: -

      публичный статический WebDriver getDriver () { return webDriver.get (); }

    static void setWebDriver (драйвер WebDriver) { webDriver.set (драйвер); }

    1. Добавьте количество потоков = 2 (файл TestNg xml) следующим образом: -

Надеюсь, это поможет. Спасибо! См. Это для получения дополнительной информации - https://rationaleemotions.wordpress.com/2013/07/31/parallel-webdriver-executions-using-testng/

0 голосов
/ 21 января 2019

Я ожидаю, что это основная причина

  hellopage1 = PageFactory.initElements(driver, helloPage1.class);

В BaseTest.

На страницах объявите

 WebDriver driver;

также

public className(WebDriver driver){

    this.driver = driver;

}

В тестовом кейсе

 WebDriver driver;

 PageClassName obj;


  @Test(priority=0)

public void test(){

    //Create Login Page object

objLogin = new PageClassName(driver);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...