2015-04-06 4 views
0

Как выбрать выпадающее меню, если 2 спускаются с тем же именем? Мне нужно выбрать и выпадающее меню, либо выпадающие имена с тем же именем. Идентификаторы для выпадающих имен динамически генерируются. Пожалуйста помоги.Выпадающее имя с таким же именем

1.

<select id="trin" 
    class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse 
      ng-valid ng-valid-required ng-touched" 
    ng-model="formData.agesOfChildren[nr]" 
    r-floating-label="Alder på barn" 
    tooltip="" r-min="1" 
    required="" only-digits="" 
    tabindex="0" name="agesOfChildren"> 

2.

<select id="ywf1" 
    class="ng-scope ng-valid-r-min non-empty 
      ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched" 
    ng-model="formData.agesOfChildren[nr]" 
    r-floating-label="Alder på barn" 
    tooltip="" r-min="1" 
    required="" only-digits="" 
    tabindex="0" name="agesOfChildren"> 
+0

1. user123

+0

У них нет разных идентификаторов? Почему вы говорите, что они такие же? Вы всегда можете использовать идентификатор в качестве локатора. – virusrocks

+0

Я пробовал с id, но без выбора – user123

ответ

0

Поскольку генерируются ID, то на самом деле не так много способов, чтобы отличить один из этих элементов из других, кроме структуры DOM.

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

Использование структуры DOM:

Первый Выберите элемент:

//select[@class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"][1] 

Второй Выберите элемент:

//select[@class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"][2] 

Я обычно стараюсь держаться в стороне от структуры селекторов DOM, из многих способов DOM можно манипулировать и изменять с помощью javascript, но в этой ситуации действительно нет другого варианта, кроме обращения к разработчикам, и попросить их добавить differiatin g для каждого из них.

0

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

Вам необходимо просмотреть оба раскрывающихся списка в своем браузере. Выполните следующие действия:

  1. правой кнопкой мыши на каждом раскрывающемся меню в Chrome
  2. Выберите Проверить элемент
  3. правой кнопкой мыши на выделенный код и выберите Copy Xpath ИЛИ CSSPath
+0

Я думаю, что это может сработать, но это, скорее всего, создаст невероятно хрупкий селектор. – aholt

+0

@aholt: Я согласен, что Xpath не является предпочтительным, но другие селектора для обоих выпадающих списков одинаковы. Xpath должен быть хорошо сформированным. – LittlePanda

+0

Исправить. Мой комментарий был более похож на то, что использование опции «Copy XPath» в Chrome, вероятно, создаст очень хрупкий селектор XPath. Лично я не видел большой разницы в использовании XPath vs CSS selector. Раньше были различия в производительности, но сейчас они отсутствуют. – aholt

-1

попробовать этот Xpath

на Вторичный охват

//select[@class='ng-scope ng-valid-r-min non-empty 
     ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched'][1] 

для первых выпадающего

//select[@class='ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse 
     ng-valid ng-valid-required ng-touched'][2] 
+0

Эти два селектора одинаковы. – aholt

+0

Пожалуйста, проверьте, что я изменил ответ, извините за предыдущий ответ. Я думал, что класс отличается, и если это не работает, вы можете справиться с этим, используя список webelement. –

+0

Теперь селектора являются такими же, как и те, что указаны в моем ответе. лол – aholt

Смежные вопросы