@qa_ru

Страница 656 из 1080
Evgeniy
29.08.2017
11:43:35
на скрам доске или канбане?

Shoo
29.08.2017
11:43:38
А зачем это если есть сабтаски ?
Затем, что сабтаски в большинстве случаев - излишняя и бесполезная сущность.

Richard
29.08.2017
11:44:03
Google
Shoo
29.08.2017
11:44:03
не понял зачем, на доске-то и так все видно
Человеку нужен снэпшот доски на определенное время.

Richard
29.08.2017
11:44:25
Для предоставления кастомеру, который не хочет никуда лезть, потому что у него лапки.

Evgeniy
29.08.2017
11:46:35
у Confluence есть API на публикацию пейджи. У Jira есть API на выхватывание нужноого тебе фильтра по таскам.

Evgeniy
29.08.2017
11:47:09
подружить это темплейтом на markdown'е. записать скриптом, положить в crontab

Shoo
29.08.2017
11:47:51
Человек хочет поле со значением int, исходя из которого меняется стандартное поле estimate.

С таким же успехом можно просто заполнять в estimate суммарную оценку всех участников, но это не решает проблемы.

Alexander
29.08.2017
11:58:58
Кстати, джироводы. Есть вопрос. Как можно в в джире настроить такой кейз: Ежедневно в заданное время (например, в 18:00 вечера) создаётся страничка в которой записываются открытые тикеты из текущего спринта, например. Или подобного рода фильтр вставляется. Реально это сделать?
в конфле просто создаётся обычная страница, в которую с помощью нужных элементов вставляются issues из джиры с нужнымми фильтрами оно будет всегда актуально, а не только в специальное время

Richard
29.08.2017
12:03:43
в конфле просто создаётся обычная страница, в которую с помощью нужных элементов вставляются issues из джиры с нужнымми фильтрами оно будет всегда актуально, а не только в специальное время
наверное, я неправильно пояснил. Мне нужно, чтобы кастомер открыл определенную страницу. Например, в за 1 августа 2017 и увидел, что в 18:00 было столь-то в опен таких-то, столько-то в резолвах таких-то.

Alexander
29.08.2017
12:04:25
а, чтобы история сохранялась ежедневная?

Evgeniy
29.08.2017
12:12:23
Я выше описал подход

Google
Yuliya
29.08.2017
12:16:42
@RichardGears



нужно только придумать фильтр. например, все такси проекта, включенные в конкретный спринт

Evgeniy
29.08.2017
12:19:04
Это динамическая страница, она не будет хранить историю

Требованием была возможность иметь стопку страниц на каждый день

Richard
29.08.2017
12:19:29
Если бы надо было просто фильтр поставить, который будет показывать ТЕКУЩИЕ статусы - проблем бы не было.

Nikita
29.08.2017
12:20:55
скриншоть их и все)

Evgeniy
29.08.2017
12:20:57
Автогенерация - задача крона или любого другого планировщика. Публикация - задача post апи. Агрегация данных - задача get апи

Shoo
29.08.2017
12:22:10
Я Ричарду предложил вариант, но его не устроило :(

Evgeniy
29.08.2017
12:22:12
1 день чтения мануалов, сделаю вам на выходных за 35 Бачей в час

За 3/4 часа

Richard
29.08.2017
12:35:13
Я Ричарду предложил вариант, но его не устроило :(
Не. Не не устроило. Буду пробовать и обсуждать.

Gennady
29.08.2017
13:22:41
В Unittest есть возможность автоперезапуска зафейленных тестов задаваемое количество раз?

Nikita
29.08.2017
13:26:11
нормально из коробки – нет, лучше взять pytest

Gennady
29.08.2017
13:50:50
нормально из коробки – нет, лучше взять pytest
Но, может есть обходные пути? Поделитесь опытом)

Evgeniy
29.08.2017
14:01:54
9\10 разработчиков на python посоветуют пользоваться де-факто стандартным уже pytest для тестирования. или Nose.

Nikita
29.08.2017
14:05:14
ну юниттест умеет чуть менее чем ничего, у него единственный плюс – что он есть из коробки

Google
Nikita
29.08.2017
14:05:43
все равно что использовать urllib вместо requests

Кирилл
29.08.2017
14:17:02
не в то окно)

Gennady
29.08.2017
14:33:09
Попробую перевести на PyTest все, если это недолго. А то достали тесты валиться, если какой-нибудь раскрывающийся список медленно раскрылся и за ним не видно другого элемента. В итоге получается, что ошибка не в приложении, а в нестабильности тестов...

Evgeniy
29.08.2017
14:34:41
поэтому тесты нужно писать так, чтобы они учитывали этот фактор, а не гоняли их по 10 раз в цикле, надеясь, что квант случайности сыграет в лучшую сторону и в этот раз выпадающий список откроется

Maxim
29.08.2017
14:35:41
вот когда начинаются проблемы с интернетом, админов начинаешь проклинать и не понимаешь где интернет виноват, где тест, а где приложение.....

Dmitry
29.08.2017
14:39:08
раннер тут ни при чем
классно ты его, типо не зачем зеркало винить коль рожа кривая или что-то такое в русском языке было

Evgeniy
29.08.2017
14:59:01
Не всегда это возможно.
звучит как отговорка сделать гибкие, быстрые тесты

Gennady
29.08.2017
15:15:51
звучит как отговорка сделать гибкие, быстрые тесты
Приведу пример. Есть выпадающий список, под ним кнопка. Раскрытый список перекрывает кнопку, нужно ждать, пока он скроется. Ожидания не помогают, вылетает unknown error. Помогает секундный time.sleep, но на глючном тест сервере он может иногда закрываться дольше. Соответственно, тест падает.

Evgeniy
29.08.2017
15:17:38
Филипп, все правильно сказал

Shoo
29.08.2017
15:29:21
Такая же фигня. Ожидания на полсекунды-секунду, чтобы анимация отработала. wait.until по каким-то причинам не справляется с этим. Но для здешних пуристов это увы, не аргумент
Можно обернуть все это в умный слип типа waitUntilClickable, в котором в цикле ждать минимальное количество времени до нужной вам кондиции.

И сразу снимается вопрос с тем, где и сколько это будет выполняться.

Но я, наверное, просто "здешний пурист", не понимающий всех прелестей захардкоженных слипов.

Google
Nikita
29.08.2017
15:30:09
слипы иногда проще чем правильные вейты)

но не правильнее

Shoo
29.08.2017
15:31:23
Не вижу сложности в вышеописанном сценарии, тем более если мы не говорим об этапе "отдебажить, что бы работало", а собираемся это на удаленном тест-сервере запускать, что бы оно там нормально гонялось.

Nikita
29.08.2017
15:31:33
waitUntilClickable тоже не всегда отрабатывает, кстати

но 99% отрабатывает

Shoo
29.08.2017
15:31:49
waitUntilClickable тоже не всегда отрабатывает, кстати
В целом это зависит только от реализации.

Gennady
29.08.2017
15:31:53
Можно обернуть все это в умный слип типа waitUntilClickable, в котором в цикле ждать минимальное количество времени до нужной вам кондиции.
Я уже говорил, что использовал подобные ожидания. Не делает, то что он него требуется и выдает неизвестную ошибку.

Shoo
29.08.2017
15:33:14
Я уже говорил, что использовал подобные ожидания. Не делает, то что он него требуется и выдает неизвестную ошибку.
"Не делает что требуется" это вам вебдрайвер возвращает "visible && clickable == true" когда элемент скрыт за другим?

Filipp
29.08.2017
15:33:14
Можно обернуть все это в умный слип типа waitUntilClickable, в котором в цикле ждать минимальное количество времени до нужной вам кондиции.
А у меня была такая фигня, что интересно, работала лучше, но из-за того же пуризма (ха-ха) я ее выкинул, мол Селениум хороший, пусть будет только чистый wait.until

Gennady
29.08.2017
15:33:37
Unknown error: element... is not clickable at point (...,...). Other element would receive the click: ....

Evgeniy
29.08.2017
15:33:43
окружения жутко лагучие, и городить свои костыли из слипов, которые постоянно нужно реранить, либо говорить себе "ну, сделаю вместо 1 секунды - две" - это отдаешь душком.

Filipp
29.08.2017
15:33:51
Не вижу смысла спорить, если честно. Пусть и говнокод, лишь бы работало. Если что-то сделает жизнь сильно лучше, заменю

Shoo
29.08.2017
15:34:10
Unknown error: element... is not clickable at point (...,...). Other element would receive the click: ....
Выглядит как вполне осмысленная ошибка.

Даже есть намек на то, в каком направлении надо копать.

Gennady
29.08.2017
15:34:53
Это при использовании ожиданий...

Evgeniy
29.08.2017
15:35:52
Это при использовании ожиданий...
двачую, вы неправильно сформировали локатор, на который кликаете. в DOM это обертка выше, которая уже имеет нужное состояние для клика.

Shoo
29.08.2017
15:35:53
Втыкаете print(Element.clickable?) под это ожидание и смотрите, что оно вам возвращает.

Evgeniy
29.08.2017
15:36:27
например, у вас обернуто все в span и вы пытаетесь кликать по нему

Shoo
29.08.2017
15:36:58
Если оно вернет clickable -> вариант Евгения выше. Если вернет не-clickable -> делаете цикл из sleep(0.1) до тех пор, пока не будет clickable == true и смотрите, решит ли это проблему.

Evgeniy
29.08.2017
15:38:57
само собой, такие изыски и ретраи - нужно делать в потрохах метода пейдж обьекта, а не в самом тесте. в тесте это будет 1 строчка. ничем не хуже, а в тыщу раз лучше слипа

Google
Dmitry
29.08.2017
19:24:21
Click целится в центр элемента, если какой-то элемент перекрывает, то будет данная ошибка

Как фиксить: либо выбирать правильно локатор, либо если это блокирует тест,то убирать элемент перекрывающий (бывает что сверху есть другой элемент, но внешне на UI не влияющий, решается с верстальщиком или фронтендером)

Dmitry
29.08.2017
19:30:18
Unknown error: element... is not clickable at point (...,...). Other element would receive the click: ....
Оо у меня про эту ошибку вброс есть. Короче выдавал эту ошибку но было не так очевидно как у тебя. У меня была ситуация что верстка поехала но поехала она гдето на сантиметр вниз что не особо заметно для глаза. Зато автомейшн видел только ту часть которач поехала и говорил что именно она получит клик

Gennady
29.08.2017
20:01:47
Потому что что-то мешает
Мешает как раз выпадающий список, который долго закрывается.

Gennady
29.08.2017
21:02:32
Дождаться его закрытия
я так и делаю, при помощи time.sleep

Nikita
29.08.2017
21:06:02
и это антипаттерн

Evgeniy
29.08.2017
21:08:41
сделали в одном месте, в другом, в третьем - потом тесты вместо 3 минут суммарно выполняются 84. Цена раскиданных явных time.sleep

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

а еще чисто с эстетической точки зрения автоматизация -это про экономию времени. неужели не хочется ускорить тесты на 500-600%.

всего лишь заменив time.sleep(5) на wait.until

Gennady
29.08.2017
21:53:45
всего лишь заменив time.sleep(5) на wait.until
я изначально так пытался сделать. Времени потратил уйму, но так и не добился результата. Не работает там wait.until...

Evgeniy
29.08.2017
21:54:23
я уже говорил, что нужно читать лучше и понимать сообщения об ошибках. оно не работало потому что наверняка был взят не тот локатор.

Gennady
29.08.2017
21:56:04
если бы локатор был не тот, то тест вообще бы не работал. А с time.sleep работает

Evgeniy
29.08.2017
21:56:08
инженерное решение - оставить time.sleep(5), поставить TODO: договориться с самим собой, когда ты вернешься к этому коду и все дерьмо вычистишь, заодно разберешься с тем, что означают селениум исключения и в каких ситуациях они возникают

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