У меня есть следующее выражение XPath, которое я вызываю из селена (технически из splinter, который вызывает селен):
//label[text()="data"]/following-sibling::div/input|//label[text()="data"]/following-sibling::div/textarea
Есть ли способ упростить это выражение? Следующее не работает в селене, хотя, похоже, работает в AquaPath:
//label[text()="data"]/following-sibling::div/(input|textarea)
4
Lorin Hochstein
19 Дек 2012 в 05:01
Не могли бы вы, пожалуйста, показать нам свой html-код?
– Abhishek_Mishra
19 Дек 2012 в 09:06
Lorin, мой ответ был вам полезен, или у вас все еще есть проблемы? Я только что сделал обновление, показав, как написать компактное выражение, когда есть значительное количество альтернатив.
– Dimitre Novatchev
19 Дек 2012 в 21:40
Да, это было полезно. В моем случае у меня есть только две альтернативы, поэтому исходное решение работает хорошо.
– Lorin Hochstein
19 Дек 2012 в 22:06
1 ответ
Лучший ответ
< Сильный > Попробуйте :
//label[text()="data"]/following-sibling::div/*[self::input or self::textarea]
Если вариантов много (более трех), такое выражение будет значительно короче:
someExpr/*[contains('|name1|name2|name3|name4|', concat('|',name(), '|'))]
4
Dimitre Novatchev
19 Дек 2012 в 21:38
Похожие вопросы
Новые вопросы
xpath
Основной целью XPath является обращение к частям XML-документа. Он также предоставляет базовые возможности для манипулирования строками, числами и логическими значениями. XPath использует компактный синтаксис без XML. XPath работает с абстрактной логической структурой XML-документа, а не с его поверхностным синтаксисом.