Элемент XPath, который содержит атрибут и родитель родителя которого содержит другой атрибут

StackOverflow https://stackoverflow.com/questions/2181406

Вопрос

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

Я пытаюсь использовать XPath для получения определенного элемента в документе HTML. Вот пример, основанный на выключении веб-страницы Google:

<html>
  <head>
    <title>XPath Test</title>
  </head>
  <body>
    <form name='f'>
      <table>
        <tbody>
          <tr>
            <td>
              <input name='q' type="text" />
            </td>
          </tr>
        </tbody>
      </table>
    </form>
  </body>
</html>

Используя пример выше (который упрощается для целей просьбы о помощи), я хотел бы иметь возможность найти входной элемент, имя которого = 'q' и у кого есть предком, который составляет 5 родителей с именем = 'f '.

Например, если я должен был сделать это в синтаксисе SWAT, который является библиотекой тестирования веб-автоматизации с открытым исходным кодом, расположенной в http://ulti-swat.wikispaces.com., Синтаксис будет следующим:

| AssertElementExists | Выражение | имя = q; parentelement.parentelement.parentelement.parentelement.parentelement.name = f | вход |

Я только начал изучать XPath и пытаться понять, как объединить предикаты с осями. Можно ли делать такие выражения с XPath? Если так, может кто-то знающий, пожалуйста, помогите?

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

Решение

Вы могли бы сделать:

//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'

или

//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'

Вы можете использовать этот рабочий стол XPath Visualizer Чтобы проверить ваши выражения XPath. А. Базовое учебное пособие можно найти здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top