Вопрос

Я пишу тест на селен.

У меня там есть метка «Назначить дизайнера», и поле выбора следует сразу за меткой.К сожалению, поле выбора имеет динамический идентификатор, и я не могу запросить его по идентификатору или любому другому атрибуту.

Могу ли я создать запрос XPath, который возвращает «Сначала выберите тег после текста «Назначить дизайнера»»?

ПС.Selenium поддерживает только XPath 1.0.

Это было полезно?

Решение

Это будет что-то вроде:

//label[text() = 'Assign Designer']/following-sibling::select[1]

Обратите внимание, что:

  • Сокращение // весьма неэффективно, поскольку вызывает сканирование всего документа.Если вы можете уточнить позицию лейбла, я рекомендую это сделать.Однако если документ небольшой, это не будет проблемой.
  • Поскольку я мало что знаю о Selenium, я использовал «метку».Если это не <label>, вы, конечно, должны использовать фактическое имя элемента.;-)
  • обязательно включите предикат позиции ([1], в данном случае) всякий раз, когда вы используете ось типа "following-sibling".Об этом легко забыть, а если это так, то ваши выражения могут привести к неожиданным результатам.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top