Использование Selenium для выбора опции при выборе с помощью optgroup

Я пытаюсь выбрать значение в элементе выбора. Я использую Selenium RC (Java) для запуска тестов. Я понимаю, что код для выбора значения задается:

selenium.select("locator", "value=REQUIRED VALUE")

Я не могу выбрать нужное значение с помощью приведенного выше кода. Я думаю, что это может быть как-то связано с optgroup в исходном коде select. Я не получаю никаких исключений, команда выполняется нормально, но, глядя на страницу, нужное значение не выбрано. Кроме того, я не могу использовать идентификаторы (вместо значения), потому что их нет. Вот исходный код селектора:

<select>
   <optgroup label="Group1">
      <option value="13">some value1</option>
      <option value="25">some value2</option>
   </optgroup>
   <optgroup label="Group2">
      <option value="18">REQUIRED VALUE</option>
      <option value="34">some value3</option>
      ...
      ...
   </optgroup>
</select>

Есть ли способ выбрать необходимое значение с помощью Selenium?

Было бы здорово, если бы мы могли избежать значений параметров (таких как «18», «34» и т. д.), потому что эти числа меняются позже по мере изменения значений. Например, «НЕОБХОДИМОЕ ЗНАЧЕНИЕ» имеет значение -18, но если бы я удалил этот элемент и добавил его снова, его значение было бы другим. В основном этот раскрывающийся список является динамическим.


person Mugen    schedule 25.09.2009    source источник


Ответы (1)


Значение требуемой опции в вашем примере на самом деле «18». Попробуйте следующее:

selenium.select("locator", "label=REQUIRED VALUE")
person Dave Hunt    schedule 25.09.2009
comment
Привет Дэйв, Спасибо за ответ. Но как вы думаете, есть ли другой способ, кроме использования 18? Содержимое раскрывающегося списка меняется в моем приложении, как и числа. Другими словами, прямо сейчас он отображается как , но это может быть любое число. Даже если я запускаю свои тесты несколько раз, эти числа меняются. У вас есть другие идеи, что можно сделать? Тем временем я обновлю этот комментарий и по моему вопросу. Спасибо, Муген - person Mugen; 28.09.2009
comment
Проверьте мой ответ еще раз. Я предлагаю изменить 'value=' на 'label='. Это позволяет вам выбирать параметр на основе его метки, а не его значения. - person Dave Hunt; 28.09.2009