Параллельное выполнение с аннотацией in @test

У меня есть тест testNG, который вернет список URL-адресов для тестирования, и он будет выполняться один за другим. Я хочу, чтобы одновременно запускались по крайней мере 2 URL-адреса .. что было бы лучшим способом сделать это?

@Test
public static void test1() throws Exception {

    Configuration conf = Configuration.getConfiguration();

    List<String> urls = conf.getListOfUrls(); // returns list of urls to test against

    setup(); //has capabilities for IE browser

    for (int i = 0; i < urls.size(); i++) {

        WebDriver.get(urls.get(z));

        //do stuff

        }
testng.org/doc/documentation-main.html#parallel-tests используйте параллельные тесты в сочетании с разделением вашего списка пополам
Hongyu Wang 10.07.2018 20:52

Возможный дубликат Параллельное выполнение TestNG

AutomatedOwl 10.07.2018 21:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
276
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать параллельное выполнение, как показано ниже:

package com.demo.core;


import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class PlayField {

    private WebDriver driver;

    public static WebDriver getChromeDriver() throws MalformedURLException {
        System.setProperty("webdriver.chrome.driver",
                           "D:\\ECLIPSE-WORKSPACE\\playground\\src\\main\\resources\\chromedriver-2.35.exe");

        return new ChromeDriver();
    }

    @BeforeMethod
    public void setUp() throws MalformedURLException {
        driver = getChromeDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().window().maximize();
    }

    @Test
    public void test1() throws MalformedURLException, InterruptedException {
        driver.navigate().to("Url1");
        // do anything
    }

    @Test
    public void test2() throws MalformedURLException, InterruptedException {
        driver.navigate().to("Url2");
        //do anything
    }

}

и в testng.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "First suite" verbose = "8" parallel = "methods" thread-count = "2">
    <test name = "Default test1">
        <classes>
            <class name = "com.demo.core.PlayField">
            </class>
        </classes>
    </test>
</suite> 

а затем запустите этот xml с помощью плагина surefire или напрямую. Он одновременно откроет два браузера. Надеюсь, это вам поможет.

Ответ принят как подходящий

Вы должны использовать DataProvider в TestNG, чтобы получить его. Допустим, поставщик данных передает несколько наборов данных, т.е. URL-адреса содержатся в списке urls = conf.getListOfUrls ();

Ниже приведен простой пример:

  @Test(dataProvider = "testdata")
public void simpleTest(String url) {

    System.setProperty("webdriver.chrome.driver",
            System.getProperty("user.dir") + File.separator + "drivers\\chromedriver.exe");

    WebDriver driver = new ChromeDriver();
    driver.get(url);
}

@DataProvider(name = "testdata", parallel=true)
public Object[][] data(){
    return new Object[][] {
        {"http://www.google.com"},
        {"http://www.seleniumhq.org"}
    };  

спасибо @murali. сейчас он запускает 2 браузера, но проблема в том, что есть действия, которые должны выполняться после открытия браузеров, которое выполняется только в одном из запущенных браузеров. как мне заставить действия запускаться во всех открывающихся экземплярах браузера.

Noob 24.07.2018 19:20
stackoverflow.com/questions/51544135/… помогите пожалуйста!
Noob 26.07.2018 19:06

@Noob попробуйте один раз без parallel = true в предоставлении данных, если он работает нормально, нам нужно искать дальше. я посмотрю 2 ряда

murali selenium 26.07.2018 20:07

Другие вопросы по теме