Кроссбраузерное тестирование с TestNG!!!

java
webdriver
Теги: #<Tag:0x00007f7b61354b78> #<Tag:0x00007f7b613549c0>

(stek) #1

Здравствуйте. Помогите пожалуйста запустить тесты в разных браузерах.В данный момент тесты запускаются только в хроме

public class Data {
    protected WebDriver driver;

    @Parameters("browserName")
    @BeforeMethod
    protected WebDriver getDriver(String browserName) {
        if(browserName.equals("chrome")) {
            browser = "chrome";
        }
        else if(browserName.equals("edge")) {
            browser = "edge";
        }

        Configuration.baseUrl = "http://mySite.com";
        

       return driver;

testNg file

<test name="CrossBrowserChrome">
        <parameter name="browserName" value="chrome"></parameter>
        <classes>
            <class name="tests.Forms">
                <methods>
                    <include name="testChrome"/>
                </methods>

            </class>
        </classes>
    </test>

    <test name="CrossBrowserEdge">
        <parameter name="browserName" value="edge"></parameter>
        <classes>
            <class name="tests.Forms">
                <methods>
                    <include name="testEadge"/>
                </methods>

            </class>
        </classes>
    </test>


(Vasiliy Rakshin) #2

Перед или после установки .baseUrl забыли такое же сделать для браузера: Configuration.browser = browser;


(stek) #3

(Vasiliy Rakshin) #4

А, ну норм, значит он уже в импортах есть, значит моя подсказка не в тему.
А тестов-то запускается 2?


(stek) #5

да, тестов 2 запускается. Но второй следует сразу за 1 в хроме


(Александр Анисимов) #6

У меня впечатление, что драйвер создаёте один раз (перед первым тестом), во втором используется уже существующий…
Покажите, пожалуйста, код после if(browserName.equals) где Вы непосредственно создаёте новый экземпляр драйвера.


(stek) #7

собственно говоря это весь код, для класа Data)


(Александр Анисимов) #8

Хорошо.
Чтобы запускался какой-либо определённый браузер, где-то в коде должна быть строчка:
driver = new ChromeDriver();
или
driver = new EdgeDriver();
или
driver = new RemoteWebDriver(“url к selenium-серверу”, someCapabilities); (в someCapabilities указывается какой браузер запускать)

В представленном коде: в зависимости от входящего параметра browserName вы меняете значение переменной browser и возвращаете то, что у Вас храниться в глобальной переменной driver.


(stek) #9

А разве в селениде это нужно?
Там же можно просто
Configuration.browser = “chrome”;

В самих класах обявляю вот так :slight_smile:

 private final WebDriver driver;
 public ClassName(WebDriver driver) {
        this.driver = driver;

    }


(Александр Анисимов) #10

Прошу прощения, не обратил внимание на “selenide” в заголовке. )))
Добавьте логирование Configuration.browser на различных этапах выполнения кода. Может чего и всплывёт :wink:
Можно ещё проверить: пересоздаётся ли сам объект драйвера.