Тест действительно запускается на сетке селена в локальных работает правильно) - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь запустить приведенный ниже код в GRID селена (выполнение «локального» кода, работает правильно), следующий фрагмент кода:

SuiteTest.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="SuiteTest" verbose="1" thread-count="2" parallel="tests"> 
        <test name="FIREFOX Test">
        <parameter name="browser" value="FIREFOX" />
        <classes>
            <class name="test.CN01_CT01_IncluirConteudoMP3" />
            <class name="test.CN01_CT02_IncluirConteudoMP4" />
        </classes>
    </test>

        <test name="CHROME Test">
        <parameter name="browser" value="CHROME" />
        <classes>
            <class name="test.CN01_CT01_IncluirConteudoMP3" />
            <class name="test.CN01_CT02_IncluirConteudoMP4" />
        </classes>
    </test>         
</suite>

BaseTest:

public class BaseTest {

    protected static ExtentReports extent;
    public static String testName;

    @Parameters({ "browser" })
    @BeforeMethod
    public void BeforeTest(Method method, Browsers browser) throws IOException, BiffException {

        Propriedades.browser = browser;
        String browserStr = browser.toString();         
        System.out.println("Before ........" + method.getName());       
        //Recuperar nome do Teste
        testName = method.getName() + "-" + browserStr;     
        // Realizando Login
        LoginPage.realizarLogin();    
        //Iniciar o relatorio
        extent = ExtentReport.StartReport(testName);

    }

    @AfterMethod
    public void finaliza(ITestResult result) throws IOException {
        System.out.println("After ........");

        //Validar Resultado dos Testes
        ExtentReport.ResultTest(result, testName);

        // Realizar Logout
        LoginPage.realizarLogout();

        // Fechando Browser
        if (Propriedades.FECHAR_BROWSER) {
            killDriver();
        }
    }

    @AfterSuite
    public static void finalizaTudo(){
        DriverFactory.killDriver();
        extent.flush();
        System.out.println("AfterSuite........");
        System.out.println(ExtentReport.diretorioReport);
        //DriverFactory.executeChrome(ExtentReport.diretorioReport);
    }

}

BasePage:

public class BasePage {

    protected static DSL dsl;

    static List<String> result = Ambiente.dadosAmbiente();
    static String url = result.get(0);
    protected static String user = result.get(1);
    protected static String pass = result.get(2);

    public BasePage() {
        dsl = new DSL();
    }

}

DSL:

public class DSL {

    public void clicarRadio(By by) {
        getDriver().findElement(by).click();
    }   

Other methods to access the screen elements (Text, Click, Button, Radio, Combo and etc.)

(...)

}

DriveFactory:

public class DriverFactory {

    static WebDriver driver;

    private DriverFactory() {
    }

    public static WebDriver getDriver() {           

        if(Propriedades.tipoExecucao == TipoExecucao.LOCAL){

                if (driver == null) {
                    switch (Propriedades.browser) {
                    case CHROME:
                        executeChrome(BasePage.url);
                        break;
                    case FIREFOX:
                        executeFirefox(BasePage.url);
                        break;
                    case IE:
                        executeIE(BasePage.url);
                        break;
                    case EDGE:
                        executeEgde(BasePage.url);
                        break;
                    }
                    driver.manage().window().maximize();
                }
        }

        if(Propriedades.tipoExecucao == TipoExecucao.GRID) {

            DesiredCapabilities cap = null;
                switch (Propriedades.browser) {
                case CHROME:
                    cap = DesiredCapabilities.chrome();
                    break;
                case FIREFOX:
                    cap = DesiredCapabilities.firefox();
                    break;
                case IE:
                    cap = DesiredCapabilities.internetExplorer();
                    break;
                case EDGE:
                    cap = DesiredCapabilities.edge();
                    break;
                }

                try {
                    driver = new RemoteWebDriver(new URL("http://192.168.0.72:4444/wd/hub"), cap);
                } catch (MalformedURLException e) {
                    System.err.println("Falha ao conectar ao GRID");
                }
                driver.manage().window().maximize();
                driver.get(BasePage.url);
                System.out.println("Abriu Browser Grid");
    }

        return driver;
}

    public static void killDriver() {
        if (driver != null) {
            driver.close();
            driver.quit();          
            driver = null;
        }
    }
}

Тест - Класс:

Тестирование классов, просто чтобы убедиться, что выполнение входит в систему и выходит из системы.

@Test
public void CN01_CT02_IncluirConteudoMp4(){

assertEquals("123", "123");
}

@Test

public void CN01_CT01_IncluirConteudoMp3() throws InterruptedException, AWTException{

assertEquals("123", "123456");
}

Сетка конфигурации

Config (Json) - Концентратор:

{
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "registry": "org.openqa.grid.internal.DefaultGridRegistry",
  "throwOnCapabilityNotPresent": true,
  "cleanUpCycle": 5000,
  "role": "hub",
  "debug": false,
  "browserTimeout": 0,
  "timeout": 1800
}

NodeChrome:

{
    "capabilities": [
        {
            "browserName": "chrome",
            "maxInstances": 1,
            "webdriver.chrome.driver": "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
        }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 1,
    "port": 5555,
    "register": true,
    "registerCycle": 5000,
    "hub": "http://192.168.0.72:4444",
    "nodeStatusCheckTimeout": 5000,
    "nodePolling": 5000,
    "role": "node",
    "unregisterIfStillDownAfter": 60000,
    "downPollingLimit": 1,
    "debug": false,
    "servlets": [
    ],
    "withoutServlets": [

    ],
    "custom": {
    }
}

NodeFirefox:

{
    "capabilities": [
        {
            "browserName": "firefox",
            "maxInstances": 1,
            "webdriver.gecko.driver": "C:/Program Files/Mozilla Firefox/firefox.exe"
        }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 1,
    "port": 5556,
    "register": true,
    "registerCycle": 5000,
    "hub": "http://192.168.0.72:4444",
    "nodeStatusCheckTimeout": 5000,
    "nodePolling": 5000,
    "role": "node",
    "unregisterIfStillDownAfter": 60000,
    "downPollingLimit": 1,
    "debug": false,
    "servlets": [

    ],
    "withoutServlets": [

    ],
    "custom": {
    }
}

При выполнении кода с использованием Selenium GRID система открывает два браузера, но не входит в систему, возникает проблема (очевидно, проблема с синхронизацией).

* +1034 * Пример: * * одна тысяча тридцать пять

Поле для входа заполняется «дважды» и возвращается «Неверный логин».

Код выполняется с использованием Eclipse IDE. Выполнить (SuiteTest.xml) - Выполнить с TestNG

1 Ответ

2 голосов
/ 01 июня 2019

Проблема заключается в вашем тестовом коде.Ваш DriverFactory инициализирует статический элемент данных в driver.Теперь, когда вы выполняете свои тесты параллельно через ваш комплектный XML-файл, ваши тесты действительно конкурируют друг с другом и в итоге перезаписывают элемент статических данных.Вы должны изменить свой тестовый код.Здесь нет проблем ни с Selenium Grid, ни с TestNG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...