Как указать "element (by.id" или "element (by.css") в Ember.js с помощью Protractor

Новое в ember.js - использовал http://yoember.com/ для создания демонстрационного сайта ember.js. Я пытаюсь понять, как использовать транспортир для тестирования определенных элементов, но у меня возникают проблемы с их указанием.

Большинство, но не все элементы (кнопки, текстовые области и т. д.) Имеют сериализованное значение идентификатора: id='ember###', которое изменяется каждый раз при перезагрузке страницы, что делает невозможным указание некоторых элементов в Protractor (например, element(by.id('ember557')).sendKeys('foo');).

Выполнение команды, подобной приведенной выше, вернет ошибку: Failed: No element found using locator: By(css selector, *[id = "ember557"]), которая связана с изменением 3-значного значения идентификатора.

В моем демонстрационном приложении я смог зайти в файл /app/templates/components/ для этой страницы и вручную добавить что-то вроде id='name' во входные данные руля и смог успешно найти и протестировать этот элемент в Protractor.

Однако это не идеально, и я хотел бы найти способ тестировать сайты, для которых у меня нет возможности изменять HTML-код.

Может ли кто-нибудь помочь мне понять это? Спасибо.

Не могли бы вы объяснить, почему вы хотите использовать транспортир? Не привык, но говорят, что это для Angular. Сам Ember имеет очень хорошую встроенную поддержку тестирования и хорошо освещается в официальном руководстве.

jelhan 05.04.2018 23:10

Я использую Транспортир в качестве исследовательского проекта для работы. В основном мы используем транспортир, и мне было поручено посмотреть, как он может работать с Ember. Я просто пытаюсь понять, что можно, а что нельзя с помощью Protractor для тестирования Ember.js. Я столкнулся со стеной и хотел спросить в Stackoverflow, могу ли я найти что-нибудь в этом роде. Я только взглянул на встроенное тестирование Ember, но мне показалось, что я не могу тестировать сайты, не размещенные локально. Это правда?

kyneese 05.04.2018 23:38

Вы можете использовать CSS selector и XPath для поиска элемента на странице, а не только ID. Комбинируйте, чтобы использовать CSS selector и XPath, он может найти любой элемент на странице, а Protractor поддерживает их оба. Так что использовать Protractor для тестирования веб-приложения Ember.js не проблема.

yong 06.04.2018 03:35

@yong К сожалению, css и xpath также имеют одинаковое значение ember ###.

kyneese 06.04.2018 05:30

например, на странице есть две карты с разными заголовками, но все элементы внутри карты имеют одинаковую структуру и один и тот же класс, вы можете найти узел контейнера карты по названию карты, используя xpath по тексту, а затем использовать узел контейнера в качестве родительского узла для найти внутри элемента с помощью css или xpath, например element(by.xpath('xpath of container node')).element(by.css('css/xpath of inside element')). Я думаю, что такой подход не должен разрешать все ситуации и потребует дополнительных усилий. Лучше всего добавить специальный идентификатор / класс в ключевой узел, например узел контейнера карты, таблицы, раздела полей формы и т. д.

yong 06.04.2018 06:41

Я не знаю, поддерживает ли его Protractor, но лучшая практика в ember - использовать атрибуты данных в качестве тестовых селекторов, а не повторно использовать классы ID или css. ember-test-selectors добавляет некоторые дополнительные функции, упрощающие этот подход и позволяющие удалить тестовые селекторы в производственной сборке. У меня такое ощущение, что речь идет о двух вопросах: а) Как мне выбрать элементы при тестировании? б) Как мне интегрировать Protactor в мой стек ember.

jelhan 06.04.2018 08:04

Ember вставляет собственные значения ember #### для идентификаторов. Вы не должны их использовать. Поместите классы или атрибуты данных в элементы для тестирования, просто добавив class = "something" или data-something к вашим элементам / компонентам.

Gaurav 07.04.2018 00:21

посмотрите ember-test-selectors

Lux 07.04.2018 00:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
220
0

Другие вопросы по теме