Перейти к содержимому

Школа Тест-Аналитика
онлайн, начало 21 ноября
Практикум по тест-дизайну 2.0
онлайн, начало 16 ноября
Программирование на Java для тестировщиков
онлайн, начало 16 ноября
Тестирование веб-приложений 2.0
онлайн, начало 16 ноября
Фотография

Преимущество XPath. Вопрос. Дискас

selenium xpath automated авто

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 starforcepro

starforcepro

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 07 Сентябрь 2018 - 07:18

Доброго времени суток, дорогие друзья. Хочу придти к истине в одном вопросе, который беспокоит меня уже не один день. 

Итак, очень многие используют в юайных тестах обращение к элементам через xpath. Почему не использовать обращение к элементам по ID. Какие минусы этого подхода, и в чем преимущество непосредственно xpath над id. По скорости они примерно одинаковые. У ID очевидный плюс в том что если меняется структура страницы то элементы мы будем получать в любом случае. Плюс xpath нужно писать и поддерживать, id - не нужно(не в той степени и только со стороны присвоения этих id на фронтах). Может быть суть кроется в том, что присваивать id всем элементам это не очень хороший подход? Но тогда почему?

Помогите кто- нибудь, это жизненно необходимо


  • 0

#2 baxatob

baxatob

    Опытный участник

  • Members
  • PipPipPipPip
  • 258 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 07 Сентябрь 2018 - 07:54

Во-первых, поиск по id существенно быстрее.

Во-вторых, есть приложения (их все больше и больше), в которых элементы не имеют статического id.

 

Присваивать id всем элементам это очень хороший подход с точки зрения автоматизации тестирования, но часто это просто невозможно.


  • 0

#3 Prettser

Prettser

    Новый участник

  • Members
  • Pip
  • 53 сообщений


Отправлено 07 Сентябрь 2018 - 12:06

Это надо как-то разработчиков фронта трестируемой системы заставить id элементам лепить, с которыми может взаимодействовать пользователь.

Просто если этих id нет, тогда и приходят на помощь xpath и css


  • 0

#4 MissLeman

MissLeman

    Активный участник

  • Members
  • PipPip
  • 116 сообщений


Отправлено 07 Сентябрь 2018 - 14:22

Это надо как-то разработчиков фронта трестируемой системы заставить id элементам лепить, с которыми может взаимодействовать пользователь.

Просто если этих id нет, тогда и приходят на помощь xpath и css

Just for my education, а что, можно, к примеру, в данном форуме добавить заранее известные айдишники элементам, которые содержат ссылку на профиль комментатора в теме? (скажем, мой ник в этом сообщении)?


  • 0

#5 starforcepro

starforcepro

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 07 Сентябрь 2018 - 19:28

 

Это надо как-то разработчиков фронта трестируемой системы заставить id элементам лепить, с которыми может взаимодействовать пользователь.

Просто если этих id нет, тогда и приходят на помощь xpath и css

Just for my education, а что, можно, к примеру, в данном форуме добавить заранее известные айдишники элементам, которые содержат ссылку на профиль комментатора в теме? (скажем, мой ник в этом сообщении)?

 

Нет, айди это уникальный идентификатор и на странице может быть только один, если сделать два элемента с одним айди то html будет невалидный. Но есть много элементов в

единственном экземпляре к которым как раз таки было бы удобно обращаться по их идентификатору


  • 0

#6 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 125 сообщений
  • ФИО:Роман

Отправлено 07 Сентябрь 2018 - 19:42

по мне так айди не особо и помогает, ну вот например:

 

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

 

или например есть поле ввода и лейбл. напряжешь программистов и они добавят айдишник на поле ввода? а на лейбл нет айдишника, будешь из-за него напрягать программистов или напишешь простейший xpath? а потом еще окажется что есть inline-отображение ошибки возле этого поля, опять надо кого-то напрягать? Да все устанут пушить такие мелочи целыми неделями

 

а вот когда деревья будут, и таблицы, особенно таблицы с опциональным столбцами которые можно добавлять и убирать, и таблицы с сортировкой и фильтрацией - тогда тут айдишники добавлять вообще практически бесполезно. все равно будешь работать со сложными xpath и с parent и child


  • 0

#7 MissLeman

MissLeman

    Активный участник

  • Members
  • PipPip
  • 116 сообщений


Отправлено 08 Сентябрь 2018 - 15:55

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

 

а у xpath вот да, яркое преимущество, что можно искать внутри чего-то (".//div...") Если этого не надо, то css быстрее, вроде. Так считается )


  • 0

#8 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Александр

Отправлено 08 Сентябрь 2018 - 19:31

Это раньше css был быстрее. 

Сейчас разница настолько незначительна, что можно не брать её в расчёт.

 

А самый плюс XPath - что вы можете искать родителя.

В css вы можете искать только потомков. Хотя я давно его не юзал, может там что изменилось?


  • 0

#9 starforcepro

starforcepro

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 08 Сентябрь 2018 - 21:15

по мне так айди не особо и помогает, ну вот например:

 

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

 

или например есть поле ввода и лейбл. напряжешь программистов и они добавят айдишник на поле ввода? а на лейбл нет айдишника, будешь из-за него напрягать программистов или напишешь простейший xpath? а потом еще окажется что есть inline-отображение ошибки возле этого поля, опять надо кого-то напрягать? Да все устанут пушить такие мелочи целыми неделями

 

а вот когда деревья будут, и таблицы, особенно таблицы с опциональным столбцами которые можно добавлять и убирать, и таблицы с сортировкой и фильтрацией - тогда тут айдишники добавлять вообще практически бесполезно. все равно будешь работать со сложными xpath и с parent и child

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

 

Вообще я пообщался с парой фронтендеров и узнал ответ на свой вопрос. Никто не мешает юзать айдишники если это воможно, Страница не сильно разжиреет(никто этого не почувствует), ни безопасность, ни стиль и абсолютно ничего не ухудшится. Единственный момент, что если вы работаете в большой команде где много разрабов на фронте то лучше использовать data атрибуты(это кастомные атрибуты), если юзать их то можно получить защиту от случайного выпиливания или изменения id элемента(на который подвязан жс о котором никто не помнит и не знает например).

 

Например на сайте тенькова есть атрибуты data-qa-*


  • 0

#10 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 317 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 10 Сентябрь 2018 - 06:15

Впервые слышу, чтобы при наличии адекватных айдишников - использовали xpath, просто потому что "я могу".

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

И это не считая того, что xpath-локатор при любом раскладе - гораздо длиннее сам по себе.


  • 0

#11 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 731 сообщений
  • ФИО:Dmitry Petrov

Отправлено 10 Сентябрь 2018 - 11:29

 

Это надо как-то разработчиков фронта трестируемой системы заставить id элементам лепить, с которыми может взаимодействовать пользователь.

Просто если этих id нет, тогда и приходят на помощь xpath и css

Just for my education, а что, можно, к примеру, в данном форуме добавить заранее известные айдишники элементам, которые содержат ссылку на профиль комментатора в теме? (скажем, мой ник в этом сообщении)?

 

можно, например ваш ID 20662, и я более чем уверен, что он такой же в БД, предзаполение БД своими данными, вполне корректная вещь в автотестах.

<a hovercard-ref="member" hovercard-id="20662" data-ipb="noparse" class="url fn name  ___hover___member _hoversetup" href="http://software-testing.ru/forum/index.php?/user/20662-missleman/" title="" id="anonymous_element_5"><span itemprop="name">MissLeman</span></a>

  • 0

#12 cr0w

cr0w

    Новый участник

  • Members
  • Pip
  • 44 сообщений
  • Город:Kiev

Отправлено 08 Октябрь 2018 - 18:42

Во-первых, поиск по id существенно быстрее.

 

Вы хоть когда то смотрели реализацию метода By.ById()? там все тот же xpath используется


  • 0
In God we trust the rest we test

#13 Сергей

Сергей

    Специалист

  • Members
  • PipPipPipPipPip
  • 891 сообщений
  • Город:Москва

Отправлено 08 Октябрь 2018 - 19:32

jQuery не пробовали использовать?
  • 0

"Если ты хороший плотник и делаешь красивую тумбочку, ты не будешь прибивать сзади фанеру, даже несмотря на то, что задняя часть повернута к стене, и никто ее не видит. Ты будешь хорошо спать ночью, только если тебе удалось воплотить в своем произведении эстетическую красоту и качество." © Стив Джобс



Selenium 2.0: стартовый уровень
онлайн, начало 9 ноября
Программирование на Java для тестировщиков
онлайн, начало 16 ноября
Автоматизация функционального тестирования
онлайн, начало 9 ноября
Selenium WebDriver: полное руководство
онлайн, начало 23 ноября



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале