Скачать презентацию ОПЫТ ВНЕДРЕНИЯ JDI МОРОКОВ ДАНИЛА Июль 25 2017 Скачать презентацию ОПЫТ ВНЕДРЕНИЯ JDI МОРОКОВ ДАНИЛА Июль 25 2017

JDI Meetup - Usage experience - Daniil Morokov.pptx

  • Количество слайдов: 19

ОПЫТ ВНЕДРЕНИЯ JDI МОРОКОВ ДАНИЛА Июль 25, 2017 CONFIDENTIAL 1 ОПЫТ ВНЕДРЕНИЯ JDI МОРОКОВ ДАНИЛА Июль 25, 2017 CONFIDENTIAL 1

JDI в моих проектах M 1 M 2 M 3 M 4 M 5 JDI в моих проектах M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 M 9 M 10 M 11 M 12 Population Analytics ➜ Требовался глубокий рефакторинг ➜ Много «голого» Seleniuma ➜ JDI использовался на уровне Page. Object’a Reporting Information ➜ Живой проект, много тест кейсов ➜ Расширение покрытия ➜ Производительность и стабильность Merck BIODB ➜ Срочное восстановление прогона ➜ Много дебага CONFIDENTIAL 2

Почему JDI 1 Партия как бэ намекает. . 2 Если Page Object, то каскадная Почему JDI 1 Партия как бэ намекает. . 2 Если Page Object, то каскадная инициализация 3 Типизированные web-элементы со встроенными методами 4 Гибкая система Preconditions 5 Enum-ориентированность 6 Возможность параллельного запуска* CONFIDENTIAL 3

Но есть боль 1 Поиск элементов без ожидания 2 Несколько проблемных элементов 3 Таблицы Но есть боль 1 Поиск элементов без ожидания 2 Несколько проблемных элементов 3 Таблицы работают только для «правильных» таблиц 4 Секции и уровни HTML дерева 5 Slow-mo дебаг 6 Матчеры в ассертах 7 Консольные логи как Война и Мир CONFIDENTIAL 4

Про поиск элементов • void wait. Displayed(); • void wait. Vanished(); • void wait. Про поиск элементов • void wait. Displayed(); • void wait. Vanished(); • void wait. Text(); • void wait(Function result. Func) { boolean result = wait(result. Func, r -> r); asserter. is. True(result); } • void admin. Label. wait(el -> el. is. Displayed(), 60); CONFIDENTIAL 5

Про сложные элементы CONFIDENTIAL 6 Про сложные элементы CONFIDENTIAL 6

Про таблицы CONFIDENTIAL 7 Про таблицы CONFIDENTIAL 7

Про секции CONFIDENTIAL 8 Про секции CONFIDENTIAL 8

Про секции CONFIDENTIAL 9 Про секции CONFIDENTIAL 9

Про секции CONFIDENTIAL 10 Про секции CONFIDENTIAL 10

Про секции CONFIDENTIAL 11 Про секции CONFIDENTIAL 11

Про секции @JPage(url =

Про секции • @Find. By(css = Про секции • @Find. By(css = ". modal-content") public static Popup. Warning popup. Warning; • @Find. By(xpath = "//ancestor: : body//*[contains(@class, 'alert-success')]" ) public Popup. Message popup. Message; • @Find. By(css = ". modal-content") @Section(global = true) public static Popup. Warning popup. Warning; CONFIDENTIAL 13

Про дебаг CONFIDENTIAL 14 Про дебаг CONFIDENTIAL 14

Про матчеры • • assert. Not. Displayed() • CONFIDENTIAL assert. Displayed() is. Displayed() – Про матчеры • • assert. Not. Displayed() • CONFIDENTIAL assert. Displayed() is. Displayed() – ищет в цикле всегда 15

Про логи @Test() public void check. Report. Group. All() { reports. Page. select. Tab(ALL); Про логи @Test() public void check. Report. Group. All() { reports. Page. select. Tab(ALL); reports. Page. search(accession. No 1); reports. Page. check. Report. Status(accession. No 1, NEW); reports. Page. open. Report(accession. No 1); report. Page. start. From. Scratch(); report. Page. perform. Action(REVIEW_COMPLETE); … … … CONFIDENTIAL 16

Про логи CONFIDENTIAL 17 Про логи CONFIDENTIAL 17

Вывод Организационный • JDI хотелось бы сделать отдельным проектом • Сначала широкий функционал потом Вывод Организационный • JDI хотелось бы сделать отдельным проектом • Сначала широкий функционал потом частный Технический • Баги надо чинить • Производительность повышать • Не бояться использовать @Deprecated CONFIDENTIAL 18

СПАСИБО ЗА ВНИМАНИЕ МОРОКОВ ДАНИЛА Июль 25, 2017 CONFIDENTIAL 19 СПАСИБО ЗА ВНИМАНИЕ МОРОКОВ ДАНИЛА Июль 25, 2017 CONFIDENTIAL 19