Selenium RC (генерация динамического идентификатора)

Я использую Selenium RC в Eclipse и JUnit, как я фиксирую динамический идентификатор, пожалуйста, ответьте мне в ближайшее время


person Manish Chandra Srivastava    schedule 04.02.2010    source источник


Ответы (3)


Чтобы использовать работу с динамическими идентификаторами, вам нужно либо использовать селекторы CSS, либо XPath.

Для xpath у вас будет xpath=//input[@contains(@id,'partOfId')], чтобы найти ввод, где вы знаете часть идентификатора, или для css это будет css=input[id^='partOfId']

person AutomatedTester    schedule 04.02.2010

Сделать их статическими не всегда возможно для конкретного проекта (используемого фреймворка).

Вы можете иметь дело с разработчиками, что они предоставляют правила для префиксов или постфиксов ID.

И затем проверьте соответственно с селекторами XPATH и regexp.

person sergionni    schedule 04.02.2010
comment
инфраструктура, которая не допускает статических (или предсказуемых) идентификаторов для значимых компонентов, должна быть немедленно удалена. - person Bozho; 04.02.2010
comment
по крайней мере, они могут попытаться сделать идентификаторы предсказуемыми - person sergionni; 04.02.2010
comment
Божо, не видел, ты сказал предсказуемо, так что согласен с тобой - person sergionni; 04.02.2010
comment
@Bozho - значит, вы предлагаете людям не использовать Dojo и ExtJS? Они создают динамические идентификаторы для компонентов, но их легко поймать и обработать. - person AutomatedTester; 04.02.2010
comment
они не позволяют вам назначать идентификаторы? JSF также генерирует идентификаторы, но дает вам возможность задать их самостоятельно. - person Bozho; 04.02.2010
comment
@Bozho - Когда вы работаете с чем-то, что генерирует много вещей до его рендеринга, вы не всегда знаете идентификатор, и, поскольку идентификаторы должны быть уникальными, вам нужно убедиться, что нет возможности перекрытия. Итак, если у вас есть 2 человека с именем Bohzo в списке на странице и для редактирования их аккаунтов вам нужен уникальный идентификатор. Не всегда выполнимо. - person AutomatedTester; 04.02.2010
comment
Я сказал статический или предсказуемый. Сложные компоненты (например, RichFaces) генерируют множество других элементов. Но их идентификаторы предсказуемы. Как mycomponentid_header. Или, если внутри несколько элементов, они называются mycomplnentid:1:item, mycomponentid:2:item и так далее. - person Bozho; 04.02.2010

Вместо этого вы можете использовать статическое имя. Или ваш собственный пользовательский локатор

person Urszula Karzelek    schedule 10.02.2010