Pr-Mex / vanessa-automation

BDD в 1С
https://pr-mex.github.io/vanessa-automation/dev/
BSD 3-Clause "New" or "Revised" License
484 stars 198 forks source link

Селекторы в снипетах #135

Open zeegin opened 5 years ago

zeegin commented 5 years ago

Заполните шаблон обсуждения GIT

Функционал: Селекторы в снипетах
   Как разработчик тестов
   Я хочу меньше похожих снипетов
   И возможность обращаться к элементам как по имени так и по представлению с помощью селекторов

Сценарий: Я хочу выбрать элемент по имени, а не по наименования
  Когда: Я выполняю шаг "И я ищу элемент "!ИмяЭлемента""
  Тогда: Выполняет поиск элемента по имени, а не по представлению заголовка.

Из https://infostart.ru/public/969637/

Возможно так же будут полезны другие селекторы, надо посмотреть какие сейчас существуют, например XPath или раньше в JQuery были селекторы.

Pr-Mex commented 5 years ago

Понял.

tsukanov-as commented 5 years ago

Восклицательные знаки как в тестере поддерживаю. Они хорошо обращают на себя внимание и не путают как продублированные варианты шагов, имхо.

hawk911 commented 5 years ago
И я ищу элемент по имени "ИмяЭлемента"
И я ищу элемент по заголовку "Заголовок элемента" 

А мне вот этот вариант больше понравился.

Pr-Mex commented 5 years ago

@hawk911 В таком варианте для каждого шага придётся создавать дублирующий. Плюс ещё бывают более сложные варианты. Например:

И в группе "ИмяГруппы" я нажимаю на кнопку "ИмяКнопки"

Тут придётся создавать четыре шага, чтобы описать все ситуации с поиском по заголовку и по имени.

1cgh commented 5 years ago

как вариант можно иметь шаг Я ищу элемент по заголовку "Заголовок элемента" или имени "ИмяЭлемента" чтобы иметь и отражение "пользовательского" заголовка в фиче и однозначно идентифицировать элемент по имени только шаги громоздкие очень получаются

shcherbakov-vadim commented 3 years ago

Предлагается, что на форму будет добавлена настройка "Спецсимвол заголовка", при указании которой во всех выполняемых фичах поиск элемента на форме будет выполняется по заголовку. Также в тексте фичи можно указать комментарий #title-escape: <спецсимвол>, который переопределяет значение настройки "Спецсимвол заголовка" для отдельной фичи. Если на форме несколько элементов с одинаковым заголовком, пользователь может:

  1. В качестве имени использовать: <спецсимвол><имя элемента>
  2. Указать родителей элемента: <заголовок родителя 1><спецсимвол>...<заголовок элемента>. При этом не обязательно перечислять всех родителей, достаточно только тех, которые позволят однозначно установить элемент на форме.
    #title-escape: #
    И из выпадающего списка "#ВидЗаявки" я выбираю точное значение 'Оплата поставщику'
    И из выпадающего списка "Дополнительные реквизиты # Банк получателя" я выбираю точное значение 'Банк'
Pr-Mex commented 3 years ago

@shcherbakov-vadim Объясни второй пример, пожалуйста. Там используется символ #, и пробел слева и справа от него. Эти пробелы как-то будут отсекаться? Они обязательные?

Pr-Mex commented 3 years ago

@shcherbakov-vadim Я правильно понимаю, что в первом случае # означает, что надо искать имя элемента, а не заголовок, а во втором случае элемент уже ищется по заголовку?

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Объясни второй пример, пожалуйста. Там используется символ #, и пробел слева и справа от него. Эти пробелы как-то будут отсекаться? Они обязательные?

Пробелы нужны исключительно для улучшения читаемости. Я планировал что к каждому элементу путы будет применяться функция СокрЛП. Мне сложно представить ситуации, когда использование пробелов в начале и конце заголовка не является ошибков

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Я правильно понимаю, что в первом случае # означает, что надо искать имя элемента, а не заголовок, а во втором случае элемент уже ищется по заголовку?

Да, не хотелось бы вводить отдельный префикс для каждого отдельного случая. Хотя согласен, что это не очевидно

Pr-Mex commented 3 years ago

@shcherbakov-vadim Ты считаешь, что нужно именно на уровне фичи задавать это поведение? Как насчет того, чтобы задать эту настройку сразу на уровне VA?

Pr-Mex commented 3 years ago

@shcherbakov-vadim Я правильно понимаю, что в первом случае # означает, что надо искать имя элемента, а не заголовок, а во втором случае элемент уже ищется по заголовку?

Да, не хотелось бы вводить отдельный префикс для каждого отдельного случая. Хотя согласен, что это не очевидно

Тут такой момент, что для случая, когда я хочу задать поиск с указанием родителя то я могу искать элемент и по имени. Поиск по имени тоже может возвращать несколько элементов, т.к. можно использовать символ *.

Pr-Mex commented 3 years ago

@shcherbakov-vadim Также для решения проблемы сужения области поиска элементов есть шаг

И я фиксирую группу "Имя группы"

Это решение вам кажется менее приемлемым?

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Ты считаешь, что нужно именно на уровне фичи задавать это поведение? Как насчет того, чтобы задать эту настройку сразу на уровне VA?

Это нужно для обратной совместимости, кроме того для некоторых фич может потребоваться другой символ

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Я правильно понимаю, что в первом случае # означает, что надо искать имя элемента, а не заголовок, а во втором случае элемент уже ищется по заголовку?

Да, не хотелось бы вводить отдельный префикс для каждого отдельного случая. Хотя согласен, что это не очевидно

Тут такой момент, что для случая, когда я хочу задать поиск с указанием родителя то я могу искать элемент и по имени. Поиск по имени тоже может возвращать несколько элементов, т.к. можно использовать символ *.

Зачем искать по имени родителя если по имени можно найти сразу элемент? Основная цель, использовать поиск по имени только в крайних случаях, когда 2 элемента с одним наименованием находятся внутри одной группы.

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Также для решения проблемы сужения области поиска элементов есть шаг

И я фиксирую группу "Имя группы"

Это решение вам кажется менее приемлемым?

Насколько я понял, этот шаг не поддерживает вложенность, а если ее добавить будет слишком громоздко

Pr-Mex commented 3 years ago

@shcherbakov-vadim Ты считаешь, что нужно именно на уровне фичи задавать это поведение? Как насчет того, чтобы задать эту настройку сразу на уровне VA?

Это нужно для обратной совместимости, кроме того для некоторых фич может потребоваться другой символ

Настройки VA создаются именно для сохранения обратной совместимости поведения фреймворка.

Расскажи подробнее, пожалуйста, про случай, когда "для некоторых фич может потребоваться другой символ".

Pr-Mex commented 3 years ago

Зачем искать по имени родителя если по имени можно найти сразу элемент? Основная цель, использовать поиск по имени только в крайних случаях, когда 2 элемента с одним наименованием находятся внутри одной группы.

Я имел ввиду случай когда я хочу найти элемент внутри родителя (родитель ищется по заголовку), но элемент хочу искать по имени, причём имя элемента я задаю в виде "ФлагНастройки*", т.к. хочу отсечь UID, который добавлен в имени элемента. Такая ситуация может возникнуть с программно создаваемыми элементами. БСП, например, создаёт элементы на форме, добавляя к имени элемента UID. В текущем синтаксисе, который ты предлагаешь символ # будет использован как разделитель заголовков. Выходит, что искать элемент по части его имени, когда заголовок, например, вообще пустой, не получится.

Pr-Mex commented 3 years ago

@shcherbakov-vadim Также для решения проблемы сужения области поиска элементов есть шаг

И я фиксирую группу "Имя группы"

Это решение вам кажется менее приемлемым?

Насколько я понял, этот шаг не поддерживает вложенность, а если ее добавить будет слишком громоздко

Да, он фиксирует только одну группу для поиска. Я правильно понимаю, что в вашем случае одной группы будет недостаточно?

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Ты считаешь, что нужно именно на уровне фичи задавать это поведение? Как насчет того, чтобы задать эту настройку сразу на уровне VA?

Это нужно для обратной совместимости, кроме того для некоторых фич может потребоваться другой символ

Настройки VA создаются именно для сохранения обратной совместимости поведения фреймворка.

Расскажи подробнее, пожалуйста, про случай, когда "для некоторых фич может потребоваться другой символ".

Когда в заголовках реквизитов встречается символ, который используется в качестве префикса имени

shcherbakov-vadim commented 3 years ago

Зачем искать по имени родителя если по имени можно найти сразу элемент? Основная цель, использовать поиск по имени только в крайних случаях, когда 2 элемента с одним наименованием находятся внутри одной группы.

Я имел ввиду случай когда я хочу найти элемент внутри родителя (родитель ищется по заголовку), но элемент хочу искать по имени, причём имя элемента я задаю в виде "ФлагНастройки*", т.к. хочу отсечь UID, который добавлен в имени элемента. Такая ситуация может возникнуть с программно создаваемыми элементами. БСП, например, создаёт элементы на форме, добавляя к имени элемента UID. В текущем синтаксисе, который ты предлагаешь символ # будет использован как разделитель заголовков. Выходит, что искать элемент по части его имени, когда заголовок, например, вообще пустой, не получится.

А какой смысл искать элементы по маске, если их может быть несколько, т.к. в БСП дополнительные реквизиты создаются с префиком "ДополнительныйРеквизит". Предполагается что в режиме указания префикса имени поиск со звездочкой использоваться не будет

shcherbakov-vadim commented 3 years ago

@shcherbakov-vadim Также для решения проблемы сужения области поиска элементов есть шаг

И я фиксирую группу "Имя группы"

Это решение вам кажется менее приемлемым?

Насколько я понял, этот шаг не поддерживает вложенность, а если ее добавить будет слишком громоздко

Да, он фиксирует только одну группу для поиска. Я правильно понимаю, что в вашем случае одной группы будет недостаточно?

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

Pr-Mex commented 3 years ago

Зачем искать по имени родителя если по имени можно найти сразу элемент? Основная цель, использовать поиск по имени только в крайних случаях, когда 2 элемента с одним наименованием находятся внутри одной группы.

Я имел ввиду случай когда я хочу найти элемент внутри родителя (родитель ищется по заголовку), но элемент хочу искать по имени, причём имя элемента я задаю в виде "ФлагНастройки*", т.к. хочу отсечь UID, который добавлен в имени элемента. Такая ситуация может возникнуть с программно создаваемыми элементами. БСП, например, создаёт элементы на форме, добавляя к имени элемента UID. В текущем синтаксисе, который ты предлагаешь символ # будет использован как разделитель заголовков. Выходит, что искать элемент по части его имени, когда заголовок, например, вообще пустой, не получится.

А какой смысл искать элементы по маске, если их может быть несколько, т.к. в БСП дополнительные реквизиты создаются с префиком "ДополнительныйРеквизит". Предполагается что в режиме указания префикса имени поиск со звездочкой использоваться не будет

  1. В БСП реквизиты могут по разному создаваться и с разными префиксами.
  2. Поиск по маске заложен в методы платформы и его имеет смысл сохранить для пользователя.
shcherbakov-vadim commented 3 years ago

Зачем искать по имени родителя если по имени можно найти сразу элемент? Основная цель, использовать поиск по имени только в крайних случаях, когда 2 элемента с одним наименованием находятся внутри одной группы.

Я имел ввиду случай когда я хочу найти элемент внутри родителя (родитель ищется по заголовку), но элемент хочу искать по имени, причём имя элемента я задаю в виде "ФлагНастройки*", т.к. хочу отсечь UID, который добавлен в имени элемента. Такая ситуация может возникнуть с программно создаваемыми элементами. БСП, например, создаёт элементы на форме, добавляя к имени элемента UID. В текущем синтаксисе, который ты предлагаешь символ # будет использован как разделитель заголовков. Выходит, что искать элемент по части его имени, когда заголовок, например, вообще пустой, не получится.

А какой смысл искать элементы по маске, если их может быть несколько, т.к. в БСП дополнительные реквизиты создаются с префиком "ДополнительныйРеквизит". Предполагается что в режиме указания префикса имени поиск со звездочкой использоваться не будет

  1. В БСП реквизиты могут по разному создаваться и с разными префиксами.
  2. Поиск по маске заложен в методы платформы и его имеет смысл сохранить для пользователя.
  1. Я не в курсе возможностей работы БСП в части управления префиксами реквизитов, но в 1С:ERP 2 у всех дополнительных реквизитов префикс "ДополнительныйРеквизит_"
  2. Учитывая что эту возможность при поиске по заголовку отключить нельзя - пользователи смогут ей пользоваться, но я планировал, что элемент должен однозначно находится с помощью заголовков родителя(ей) и заголовка элемента.