Max • 5 days ago
Здравствуйте Andrei,
Хочу поблагодарить вас за отличный фреймворк базирующийся на Selenium WebDriver.
Я бы хотел поделится с вами своими идеями, о том как можно улучшить Selenide.
Для начала "Прелюдия":
Тенденция такова, что все больше и больше Web приложений разрабатываются на AngularJS.
Команда из AngularJS разработала Protractor - фреймворк для тестирования AngularJS приложений на JavaScript, который в отличии от Selenium WebDriver предоставляет специальные средства для взаимодействия с Web элементами.
Например поиск элементов: by.model, by.repeater, by.binding и т.д
Как показывает практика, Protractor справляется со своей задачей лучше чем классический Selenium WebDriver, поэтому приходится использовать Proractor вместо Selenide :(.
Относительное недавно, появились проекты портрующие Protractor на C# и Java (http://habrahabr.ru/post/274413/ и http://www.codeproject.com/Articles/1066968/Developing-Protractor-tests-in-Csharp-or-Java)
Предложение по улучшению:
Не хотелось бы реализовыввать еще один Selenide для AngularJS на базе Protractor + Selenium Webdriver.
Было бы замечательно если бы Selenide предоствлял средства взаимодействия с Web элементами AngularJS, тем более что уже есть кое какая реализация Protractor под Java (NgWebDriver, NgWebElement, NgBy, ...)
Что скажите по поводу идеи создать/унаследовать отдельно драйвер для работы с AngularJS приложением ?
Selenide прекрасно работает с Angular, сам проверял, главное использовать shouldBe(visible/invisible), что касается портов Protractor, то я считаю нет смысла завязываться на ng элементы, так как они имеют свойства меняться, например ng-click="actionA" на ng-click="actionB", потому лучше завязываться на id, name, css selectors. Директивы также прекрасно находятся selenide, например $("my-item.my-class")
@kenshir007 Спасибо!
Получается, больше ничего и не нужно добавлять в селенид?
Или всё-таки какие-то улучшения можно было бы сделать?
@asolntsev there is already a framework done in java to test protractor scripts. Look into it. It may be useful : https://github.com/paul-hammant/ngWebDriver
Правильно сделали, что проигнорили Angular, так как сейчас в тренде Angular 2, который работает по абсолютно другому принципу. Селенида кстати прекрасно справляется с Angular 2, если конечно не завязываться на директивы, а вместо этого использовать CSS селекторы
Соглашусь, с тем что нет острой необходимости поддерживать нативные angular всякие плюшечки. Selenide можно использовать для сайтов с Angular, с одной лишь спецификой, должно быть чуть больше should(visible) и подобных конструкций
@kenshir007 @bravoaqa Ух ты! Отлично.
Спасибо за информацию.
Тогда закрываем тикет?
Да, я даже больше скажу, не требуется даже танцев с бубном с ReactJs