@qa_ru

Страница 456 из 1080
Maxim
28.04.2017
09:52:30
есть вопрос

Java > наполнение BaseClassTest

в нем храним набор ссылок на переменные всех пейджей их скажем 30 шт

которые потом с тестах используем при инициализации

Google
Maxim
28.04.2017
09:53:50
возник спор

что мы этим самым сделали из класса мусорник

Aleksandr
28.04.2017
09:54:16
а зачем всех?

Maxim
28.04.2017
09:54:49
+ переменные название страниц всегда одинаковы и никто индекс страницу не называет на свой

лад

roma
28.04.2017
09:55:44
Maxim у тебя junit или testng?

Maxim
28.04.2017
09:55:47
testng

Boris
28.04.2017
09:56:05
roma
28.04.2017
09:56:25
http://stackoverflow.com/questions/24067577/reading-data-from-file-using-dataprovider-in-testng

используйте файл датапровайдеры

если junit - то https://github.com/Pragmatists/JUnitParams

Maxim
28.04.2017
09:57:11
стоп

я не за параметры говорю

Google
Maxim
28.04.2017
09:57:21
а ссылки на страницы

roma
28.04.2017
09:57:34
ну так вынеси их в фал

файл

roma
28.04.2017
09:57:46
нет смысла их хранить в классе

вот пример с csv: https://gist.github.com/djangofan/7027833

для testng

Maxim
28.04.2017
09:58:21
Просто ссылки IndexPage indexPage; MainPage mainPage; AnotherPage anotherPage: SecondPage second; которые уже по надобности используются в тестах

roma
28.04.2017
09:58:59
может ты имел ввиду экземпляры классов?

или ссылки на объекты

Maxim
28.04.2017
09:59:37
ссылки на объекты)

roma
28.04.2017
10:01:45
Не надо всё в base класс инициализировать и хранить. Зачем тебе для всех тестов все страницы? Объявляй и используй экземпляры классов там где надо, т.е. в соответсвующих классах с тестами для определённых страниц

Maxim
28.04.2017
10:02:14
инициализурию только тогда когда мне нужно, а так храню ссылки

Anton
28.04.2017
10:07:59
в нем храним набор ссылок на переменные всех пейджей их скажем 30 шт
есть два варианта: 1. Как у вас, вы где-то храните список всех PageObject классов 2. У вас есть какой-то метод, который каким-то образом автоматически составляет этот список: например, парсит все файлы в определенной дирректории и формирует из этого список классов

roma
28.04.2017
10:09:55
Ну так не храни всё в одном классе

Maxim
28.04.2017
10:15:39
есть два варианта: 1. Как у вас, вы где-то храните список всех PageObject классов 2. У вас есть какой-то метод, который каким-то образом автоматически составляет этот список: например, парсит все файлы в определенной дирректории и формирует из этого список классов
1. Все пейджы находятся по пакетам согласно разделам(логики). 2. Нет есть просто список ссылок на эти пейджы в базовом классе Вопрос именно про этот список ссылок, насколько это правильно не правильно

Anton
28.04.2017
10:16:00
Нормально это )

если вам это не создает проблем :)

Maxim
28.04.2017
10:16:42
вот один из четверых в команде людей считает, что это мусор

что зачем они ему доступны всегда все

Google
Anton
28.04.2017
10:17:09
и как предлагает сделать ? подключать каждый пейдж в каждм отдельном тесте ?

Maxim
28.04.2017
10:17:11
аргументы ищем что бы никто не остался в обиде)

и как предлагает сделать ? подключать каждый пейдж в каждм отдельном тесте ?
стоп подключать всмысле наследовать или создавать просто ссылку и экземпляр обьекта

Anton
28.04.2017
10:19:50
считаем количество строк: для сьюта А: нужны 3 пейджа и один базовый класс с управлением браузером/ожиданиями и прочим мы пишем 4 строки подключения библиотек сьют Б: использует 2 пейджа тех же, которые А и еще 2 пейджа других и 1 базовый класс: итого 5 строк альтернативный вариант: Сьют А и Сьют Б подключают базовый класс, в котором все пейджи: по 1 строчке; В базовом классе 30 строк подключений пейджей тут простая арифметика Другая сторона вопроса: если они инициализируются в базовом классе и занимают ресурсы оперативки - это как бы не совсем продумано; но наверное пофиг, если каждый из не жрет слишком много памяти.

стоп подключать всмысле наследовать или создавать просто ссылку и экземпляр обьекта
не понял при чем тут наследования ? Ну у вас есть строка которая делает доступным обращение к классу Пэйджа: примерно include PageOne есть какая-то строка инициализирующая объект класса: PageOne pOne = new PageOne(); Строка инициализации, на сколько я понял, у вас и так в тестах. Увеличится количество строк include BlaBlaBla

Maxim
28.04.2017
10:25:14
разве ссылка на объект без инициализации уже забирает память? BaseClassTest: IndexPage index; TEST DashboardPage dashaboard; - храним в таком виде index = SignIn.login(); // return indexPage ссылка которой хранится в базовом классе

TestDashboard extends BaseClassTest { Test .... }

Maxim
28.04.2017
10:28:42
ну вот мы всегда уже имеем ссылки на объекты, бери да используй, туда заходим в случае если страницу добавляет или убираем, а кого то смущает....

Anton
28.04.2017
10:29:14
TestDashboard extends BaseClassTest { Test .... }
ну вот тут у вас будет либо: PageOne page = new PageOne(); либо page = new PageOne(); Аргумент в пользу хранить все в одном месте: * у вас будут одинаковые имена в разных тестах для одних и тех же страниц

Maxim
28.04.2017
10:29:32
да)

Maxim
28.04.2017
10:31:53
спасибо)

странно что то в пятницу тихо)

Aleksandr
28.04.2017
10:33:43
коллеги, продолжу в тему java и selenium как в page object получить в каком браузере бежит тест

roma
28.04.2017
10:33:53
у всех релизы))

Aleksandr
28.04.2017
10:34:01
хочу я этого, потому что верстка отличается

Maxim
28.04.2017
10:34:13
у всех релизы))
у нас не будет фуххх

Nikolay
28.04.2017
10:34:34
мы всей командой единогласно решили, что релизы по пятницам - зло

Aleksandr
28.04.2017
10:34:52
у всех релизы))
- зачем по пятницам релизится? - что бы за выходные баги успеть поправить!

Google
Maxim
28.04.2017
10:34:53
+++ особенно после 17-00)

Dmitry
28.04.2017
10:35:31
у нас релизы по пятницам ваще табу.. только в каких то супер крайних случаях

Maxim
28.04.2017
10:36:01
хотя может есть более проще решение

используете selenide?

Capabilities cap = ((RemoteWebDriver) driver).getCapabilities(); String browserName = cap.getBrowserName().toLowerCase(); System.out.println(browserName); String os = cap.getPlatform().toString(); System.out.println(os); String v = cap.getVersion().toString(); System.out.println(v); первое что нашлось на стеке

Aleksandr
28.04.2017
10:37:07
используете selenide?
нет, голый selenium

Admin
ERROR: S client not available

Maxim
28.04.2017
10:37:27
тогда в таком виде как выше написал можно, как из селенида вытащить не искал)

Maxim
28.04.2017
10:39:11
так а зачем вам его дальше передавать, вы из драйвера ведь тяните информацию

а ничего в нем не меняете

Aleksandr
28.04.2017
10:42:11
а как я к нему обращусь?

Maxim
28.04.2017
10:42:24
public String getBrowser(WebDriver driver) { Capabilities capabilities = ((RemoteWebDriver) driver).getCapabilities(); return capabilities.getBrowserName().toLowerCase(); } вот вам метод простенький которому вы скормите драйвер, а он вернет какой запущен в момент теста

в стринге

Aleksandr
28.04.2017
10:43:05
это я в тесте могу сделать

Maxim
28.04.2017
10:43:05
System.out.println(getBrowser(driver));

Aleksandr
28.04.2017
10:43:22
а хочу в пейдж-обжесте

Maxim
28.04.2017
10:43:58
ммм что именно в пейджобджекте

Google
Maxim
28.04.2017
10:44:05
немного не понял)

Aleksandr
28.04.2017
10:45:08
в пейдж-обжекте есть метод, который заполняет поле/поля, эти поля разные в зависимости от браузера хочу

Anton
28.04.2017
10:45:10
вам видимо нужно тогда наследовать PageObject от драйвера - тогда по факту экземпляр PO будет является и Драйверов и в метод выше мжно будет скормить сам PO

Aleksandr
28.04.2017
10:45:43
пейдж обжект никак не может от драйвера наследоваться

он от абстарктного GenericPage наследуется

Maxim
28.04.2017
10:47:01
а почему не сделать через иф хром то заполни это поле иф фаерфокс то это?

или у вас возможно будет много вариаций?

Aleksandr
28.04.2017
10:47:34
а почему не сделать через иф хром то заполни это поле иф фаерфокс то это?
я так и хочу, но туплю, как определить это в пейдж-обжетке

Maxim
28.04.2017
10:47:46
ну ща попробуем что то придумать)

можно пример методов заполнения?)

чтоб наглядней было)

Aleksandr
28.04.2017
10:50:35
public void fillEmail() { String email = Generators.randomEmail(); emailInput.sendKeys(email); }

Sergey
28.04.2017
10:56:08
мы всей командой единогласно решили, что релизы по пятницам - зло
Какое мудрое решение ) У нас на уровне компании это зафиксировано. По пятницам ничего опасного не выпускаем.

Gnam
28.04.2017
10:56:54
У нас так во многих компаниях было

в пятницу релизам категорически НЕТ, четверг просто НЕТ)

Prokop
28.04.2017
10:58:26
В пятницу не релизятся не потому что не хотят, а потому что больший риск факапа

Gnam
28.04.2017
10:58:40
+ обязательно план отката прописанный

Anton
28.04.2017
10:58:48
пейдж обжект никак не может от драйвера наследоваться
вы правы, не много не так выразился: в Базовый (абстрактный) класс пейджа можно добавить в инициализации ссылку на браузер, для которого этот пейдж инициализируется

Страница 456 из 1080