Selenide и ChromeDriver (как запустить тесты в Хроме)

Еще раз всем здравствуйте!
Такая уж у меня натура: пока не доделаю - не успокоюсь.
Излазил весь интернет. Перебрал все возможные варианты. Selenide упорно запускает FireFox.
Решил создать отдельную тему для этого.

Устанавливал пропертис:

Configuration.browser = "chrome";
System.setProperty("selenide.browser", "chrome");

Другие варианты тоже не помогают. Может у кого-то есть подробный туториал? Может pom надо как-то настроить?

Такс сложно подсказать, нюансов может быть много. Можешь на GitHub выкинуть, проектик, поглядеть потыкать, посмотреть.

Я же тебе написал в чём проблема. в том что ты инициализируешь страницу не в тесте где будешь использовать её.

Если не помогло, значит выложи код на github - в чём то другом ошибаешься

Чуть позже выложу код.
А по поводу инициализации страницы…она инициализируется в классе MainSteps, где @Step аннотации используют ее методы

ждём код

ага, давай код :slight_smile: как раз недавно переписал свой фреймворк под Selenide :slight_smile: Интересненько что ты там понаписывал :slight_smile:

1 лайк

Спасибо, ребят, за помощь. Сегодня уже нет возможности, завтра с утра выложу.

Накидал новый тест, выложил. Обычный таск на проверку Яндекс Маркета.
В общем, просто хочу понять как это запустить с ChromeDriver

1 лайк

Вот это круто, когда люди используют github, а не кидаются кусками кода в комментариях.
Сразу легко повторить и исправить.
Лови pull request: run tests in Chrome by asolntsev · Pull Request #1 · Sudalius/YandexMarketTest · GitHub

Проблема была в том, что ты создавал объект MainSteps mainSteps = new MainSteps(); ДО метода beforeTest(). А MainSteps открывает браузер в конструкторе.

2 лайка

Большое спасибо Вам за помощь! Все заработало :smiley:
Только путь приходится все равно прописывать и драйвер в папку класть, как я понял.

Тут есть три варианта:

  1. прописывать и драйвер в папку класть,
  2. один раз скачать chromedriver и положить в PATH - тогда не надо нигде никакие пути прописывать (я именно так делаю)
  3. Использовать аннотацию, которая умеет автоматически скачивать вебдрайвер: Automation Remarks

Я ж дважды до этого писал, чтобы ты убрал от туда ту строку)) И перенёс её как минимум в тесты))

Да, я помню. Спасибо. Это просто я протупил))

@Sudalius, всегда интересовал этот подход со степами. Как понять, что должно быть в этих степах?

Как бы для чего это сделано - понятно, есть некий обьект страницы с элементами этой страницы и непосредственно с работой по данному элементу. Есть еще некая прослойка, для бизнес логики, в которой собственно и манипулируешь методами элементов из того или иного обьекта страницы. Но вот что это за такие степы?

Вот есть степ - MainSteps, в котором по какой-то непонятной причине есть методы:

  • openYandex
  • clickMarket

каким будет следующий степ? SecondStep? И что будет в нем?.. Часто натыкаюсь на эти степы и не мовсем могу понять… По сути это было придумано, как прослойку для бизнес логики.

Пример:

есть у нас какая-то покупка, на странице /store.html, создаем объект этой страницы, типо StorePage, закидываем туда элементы этой страницы и методы по работе с этими элементами, делаем еще класс, (ту самую прослойку) и называем ее к примеру StoreXxxxx (по сути это может быть и хелпер), в котором уже методы будут - “сделать покупку с приемом каких-то данных попкупки”, к примеру страница лендинга, тип подписки, и прочее и так дальше и дальше. Вот с этими степами не очень как-то понятно, если честно.

@Sudalius, можете разьяснить плиз, или может кто в теме, обьяснить?

Эти Степы используются для отчетов в Yandex Allure. Собственно, из этого фреймворка эти аннотации и взяты. Чтобы когда у Вас тест завалится было видно какой шаг упал. По идее, можно обойтись и без них.
С другой стороны, как мне кажется, если у Вас много страниц и много тестов, тотлучше для каждого теста создать свой файл с шагами, чем создавать кучу экземпляров различных классов-страниц. Может я и ошибаюсь…

думаю ради только степов выносить так в класы - излишне, можно эту аннотацию вешать на методы, не важно где они находятся :slight_smile:

    @Step("Perform logout by button 'Log out'")
    public LoginPage clickLinkLogout() {
        $(By.name("Log out")).click();
        return loginPage();
    }

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