Как стать автором
Обновить
12
0
Anatoliy Surin @savkk

sdet

Отправить сообщение
Интересно просто гулять ночью, когда в любой момент мимо тебя может пробежать заяц))
Объективная разница температур. Мы, например, живем на втором этаже и у нас зимой очень холодный пол и еще сквозит откуда-то с окон. Вызывали специалиста, который настраивал окна, ставил какие-то дополнительные крепления. Бесполезно, всё равно дует. При этом на два этажа выше соседи выкручивают батареи на минимум, у них жара.
может это было давно? Мы семьей переехали 3 года назад в Иннополис из Омска. Никаких конфликтов на национальной почве ни разу не видели. Ладно Иннополис, в котором намешано очень много национальностей, но мы бываем очень часто в Казани, да и в другие города РТ ездили. Слышал, что есть какие-то преференции в бизнесе, но как-то я далёк от этого, не сталкивался.
Соседушку, 120 дом.
Всё как есть. Я живу в Иннополисе больше 3-х лет. За эти годы город очень сильно изменился и всё в лучшую сторону. Мне очень нравится, что от моей квартиры до рабочего места 6 минут пешком.
Использовать Cucumber в таком виде как используете вы является одним из самых распространенных антипаттернов, но, как и любой другой антипаттерн в определенных условиях он имеет право на жизнь.
Структура, которую задаёт Cucumber, может неплохо помочь в организации кода, однако тоже самое можно сделать и без него.

В Cucumber 5 TypeRegistry является deprecated, на много проще определить свои преобразователи с помощью аннотаций @ParameterType и @DataTableType.
Спасибо за ссылки на мои статьи, несколько месяц подумываю написать статью про нововведения Cucumber 5, но как-то не доходят руки.
Почему не использовали WinAppDriver или Winium раз все равно используете совместно с WebDriver'ом?

Да и вообще можно было воспользоваться AutoItX. Существенно себе облегчили бы жизнь при дебаге в случае возникновения ошибки. Да и сопровождать ваше решение такое себе. И да, атрибуты элементов windows-окон также могут поменяться, как и атрибуты web-элементов.
Selenium Grid — это кластер из Selenium Hub + нескольких Node.
B Selenium Hub и Node — это Selenium Server, запущенный на разных машинах в разных режимах.
Selenium Grid предназначен для параллельного запуска браузеров на большом количестве машин. Ноды могут быть на разных ОС и с разными браузерами.
Selenium Hub принимает запрос на запуск определенного браузера, на определенной платформе. Используя эту информацию Selenium Hub выбирает доступную ноду и все последующей команды по управлению браузером, отправляемые Selenium, пересылает на неё.
Selenoid — это имплементация Selenium Hub. В Selenoid ноды запускаются в докер-контейнерах.

Так для этого и существует FluentWait. Это просто готовое решение одной проблемы, не нравится, пишите свое. Честно, я вообще не понял суть статьи, проблема высосана из пальца

Это всё понятно, но почему бы не сделать свою реализацию, принимающую SearchContext, а не сомневаться в целесообразности в WebDriverWait?
Не понимаю, какая разница SearchContext или WebDriver? Ну усекли вы возможности до 2 методов, а WebDriver то никуда не делся.
Всё взаимодействие с браузером осуществляется через него.
Когда вы ищите что-то из контекста WebElement'а, вы всё равно возвращаетесь к WebDriver'у.
Вы совсем не правы. В классе ExpectedConditions есть еще как минимум один метод, возвращающий не Boolean и не WebElement, это метод alertIsPresent. Еще есть метод numberOfElementsToBeMoreThan, который прекрасно справляется со своей задачей и возвращает List элементов, есть visibilityOfAllElementsLocatedBy/visibilityOfAllElements, которые также нормально возвращают List элементов с проверкой на пустоту списка.

Возвращаемое значение не всегда требуется, но есть больше количество кастомных conditions с возвращаемыми объектами различных классов.
Кстати да, забыл про это написать. Полностью поддерживаю!
То, что Simon Stewart использует в своем примере не ту переменную, скорее опечатка, а не правило. Не стоит на это обращать внимание.

Буду говорить за Java. Вообще вроде как всё логично.
Класс WebDriverWait расширяет класс FluentWait, который является реализацией интерфейса Wait. В интерфейсе Wait определен один метод — until, принимающий Funtion<? super T, V>, т.е. функцию с входным параметром T и выходным V. И это вроде как сделано не просто так, мы не должны завязываться на внешние переменные(доступные из «клиентского кода»), по этому в функцию передаем всё необходимое для её выполнения. Слабое связывание.

WebDriverWait в качестве T использует интерфейс WebDriver:
public class WebDriverWait extends FluentWait<WebDriver>

добавляет в igoring NotFoundException.class, т.е. игнорирует практически все исключения, которые могу быть вызваны при работе с WebDriver, а также переопределяет метод timeoutException, добавляя в сообщение диагностическую информацию по текущей сессии WebDriver'а.
Что из этого следует? А то, что в случае если WebDriver не нужен в контексте ожидания, используйте FluentWait с необходимым входным параметром.
К вашу функционалу вы попадаете без участия функций сторонней системы?
Честно, так и не понял о чем статья. О там как пользоваться куками в Selenium? Ну не знаю…
Если есть возможно, то лучше мониторить изменения на стороннем сервисе через предоставляемое ими API, может есть такая возможность?
Вообще не понимаю, зачем заходить туда Selenium'ом, таким образом подвергать опасности и без того хрупкие UI-тесты.
В случае необходимости периодически руками проверять UI.
Да и вообще тестить сторонние сервисы, да еще и на проде, это мне кажется прям совсем не правильно.

Да, вы правы, об этом я делал заметку в

К теме статьи это не относится, но да, вы правы. Разработчики вынуждены были отказаться от поддержки других JVM-языков. На сколько я знаю, они стремятся поддерживать одинаковый функционал во всех реализациях Cucumber, но в связи с тем, что сейчас в core-jvm команде всего 3 человека и все они занимаются разработкой только в свободное время, а так же участвуют в других core-командах cucumber, поддерживать такое количество JVM-языков нереально.
в статье сделайте подсветку синтаксиса, при чем тут возможности Cucumber?
может код нужно было вынести в конструкцию <source>?
Есть даже подсветка геркина — <source lang="gherkin">
Десериализация может понадобиться, например, для осуществления долгосрочного хранения или преобразования сущности в другой формат.
1

Информация

В рейтинге
Не участвует
Откуда
Иннополис, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность