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

Фотография

Преимущество 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
  • PipPipPip
  • 152 сообщений


Отправлено 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 772 сообщений
  • ФИО:Роман

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

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

 

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

 

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

 

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


  • 0

#7 MissLeman

MissLeman

    Постоянный участник

  • Members
  • PipPipPip
  • 152 сообщений


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

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

 

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


  • 0

#8 Noksa

Noksa

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

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

Отправлено 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
  • 388 сообщений
  • ФИО:Воробьева Татьяна


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

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

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

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


  • 0

#11 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО: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
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

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

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

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



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

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