Запускайте тесты селена в разных браузерах через TestNG - PullRequest
0 голосов
/ 01 июля 2018

Может ли кто-нибудь помочь мне, потому что я действительно не понимаю:

Это мой файл TestNG:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GRID SAMPLE TEST" parallel="tests" verbose="3" thread-count="2">
    <test name="GRID EXECUTION WITH  CHROME" parallel="classes" verbose="3" thread-count="2">
    <parameter name ="browserType" value="chrome"/>
        <classes>
            <class name ="Tests"/>
            <class name ="Tests2"/>
        </classes>
    </test>
    <test name="GRID EXECUTION WITH  FF" parallel="classes" verbose="3" thread-count="2">
    <parameter name ="browserType" value="firefox"/>
        <classes>
            <class name ="Tests"/>
            <class name ="Tests2"/>
        </classes>
    </test>
</suite>

И это мой метод установки:

RegistrationPage rp;

    @BeforeClass
    @Parameters("browserType")
    public void setUp(String browserType) throws InterruptedException  {
        rp = new RegistrationPage();

        if (browserType.equalsIgnoreCase("firefox")) {
            Configuration.browser = "firefox";
        } else if (browserType.equalsIgnoreCase("chrome")){
            Configuration.browser = "chrome";
        }
        Configuration.baseUrl = "http://demoqa.com/registration/";

    }

Я использую Selenide, который является оберткой для Selenium, но это не главное. Дело в том, что я хочу, чтобы одни и те же тесты запускались на chrome (2 здесь) и firefox (здесь). Когда я запускаю их в режиме отладки, все в порядке, и 2 теста выполняются на FF и еще 2 - на CHROME. Но когда я запускаю их без отладки в обычном режиме (щелкните правой кнопкой мыши на xml и запустите под именем testNG), тогда все мои тесты выполняются либо только на FF (4), либо только на CHROME (4)!

Может кто-нибудь объяснить, почему? Я что-то здесь не так сделал?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Причина, по которой в данный момент происходит сбой - вы пытаетесь запустить тесты параллельно при использовании XML (в отличие от режима отладки, который, как я предполагаю, выполняется в одном потоке).

Оба теста (test элементы из TestNG XML) выполняются почти одновременно, оба устанавливают поле Configuration.browser, которое определяется как static , то есть существует только один его экземпляр и перезаписывается какой поток будет выполнен позже.

Это можно исправить путем последовательного выполнения тестов или создания вручную отдельного экземпляра WebDriver (в соответствии с параметром browserType) для каждого потока и установки его с использованием WebDriverRunner.setWebDriver() вместо Configuration.browser.

Например:

@BeforeTest
@Parameters("browserType")
public void setUp(String browserType) throws InterruptedException  {
    rp = new RegistrationPage();

    Configuration.baseUrl = "http://demoqa.com/registration/";

    if (browserType.equalsIgnoreCase("firefox")) {
        WebDriverRunner.setWebDriver(new FirefoxDriver());
    } else if (browserType.equalsIgnoreCase("chrome")){
        WebDriverRunner.setWebDriver(new ChromeDriver());
    }

}

Надеюсь, это поможет.

0 голосов
/ 02 июля 2018

использование:

@ BeforeTest

аннотации, и тогда он выберет другой браузер, как вы упомянули в теге <test> в testNG.xml

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