Наступила зима, где-то уже выпал первый снег, а где-то до сих пор идут дожди. А у нас все по плану, тренинги на самые востребованные темы мы запускаем в штатном порядке. Мы сформировали расписание тренингов по тестированию ПО до марта (в расписании на сайте представлены только ближайшие тренинги, если вы хотите записаться на следующий, просто напишите нам на почту trainings@software-testing.ru).
Для крупных компаний, которым необходимо провести планирование бюджета на первое полугодие, мы готовы по запросу предоставить план проведения тренингов до лета.
Ниже представлены онлайн-тренинги с разбивкой по областям тестирования. Каждый тренинг включает в себя качественный теоретический материал, практические работы с обратной связью от тренера, постоянные консультации тренера во время всего срока обучения.
Мы работаем уже больше 6 лет, и за это время нам прислали сотни отзывов, по результатам которых наши тренинги постоянно улучшаются.
У меня вопрос по поводу работы с локаторами, а именно:
В одном из "Уроков" был найден такой пример:
// Элемент имеет класс “news_list_slot” и находится внутри элемента c классом “news__list” ,
сайт - mail.ru
//CSS: div[class='news__list'] div[class='news__list__slot']
//Xpath: //div[@class='news__list']/div[@class='news__list__slot']
Вот только у меня так не работает.
В моем случае класс находится внутри класса, который находится внутри класса... и так - вот столько раз, сколько в примере (мой реальный пример):
Несколько месяцев назад я начала новый проект автомации на основе архетипа (Алексея Баранцева) используя TestNG. Проект очень вырос и потребовалось запускать его хотя бы в трех threads.
Сразу началась путаница в логах и скриншотах между тестами. Вначале проблема была в использовании static (особенно в log4j) и я вытерла почти все упоминания static в проекте :-) Это сразу же помогло, но когда количество тестов опять выросло, проблема вернулась. Логи работают хорошо, но скриншоты путаются и тесты падают в непонятный местах (там где при непараллельном пробеге они отлично проходят)...
И там проблема решилась после двух шагов. Первый - снятие скриншотов делать в @AfterMethod. Второй - убрать все @After и @Before из супер класса тестов - в сами тесты:
1) eliminate the listener, and take all screenshots in the @AfterMethod. 2) Move the @Before/After Method/Test methods into the child classes, but simply call methods in the parent to do all the work. Another thing I noticed is that for #2, TestNG is supposed to run the parent '@Before' methods then the child '@Before' methods; and then at the end run the child '@After' methods and then the parent '@After' methods. I ran a series of simple tests, I found that all before/after methods were not being run, so for the few cases where I was using @Before and @After methods in both parent and child, I consolidated. Things seem to run much better now, the driver does not get confused, and screenshots are being attached to the correct browser/test.
Мне очень не хотелось бы это делать. Для первого шага надо изучить testNG rules, чтобы знать когда тест упал. (Сейчас тест сам зовет функцию скриншотов из super-class когда падает). Второй шаг еще хуже - функция супера @BeforeClass, которая инициализирует WebDriver, хелперы и остальное - ее размножать для каждого теста (!) - по-моему не стоит.
Намного легче перевести проект в JUnit где таких проблем нет (наш второй проект бежит с JUnit на 26 threads не делая никакой путаницы).
Может кто-то сталкивался с подобной проблемой? Любые советы приветствуются!