
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
ну так вынеси их в фал
файл

Boris
28.04.2017
09:57:42

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

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

Maxim
28.04.2017
10:15:39

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 строк подключений пейджей
тут простая арифметика
Другая сторона вопроса: если они инициализируются в базовом классе и занимают ресурсы оперативки - это как бы не совсем продумано; но наверное пофиг, если каждый из не жрет слишком много памяти.


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

Anton
28.04.2017
10:27:05

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
у нас релизы по пятницам ваще табу.. только в каких то супер крайних случаях

Aleksandr
28.04.2017
10:35:46

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

Admin
ERROR: S client not available

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

Aleksandr
28.04.2017
10:37:55

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

Maxim
28.04.2017
10:45:29

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