Так что вам нужно выражение XPath, чтобы соответствовать каждый form
элемент (//form
), который имеет среди своих потомков в input
элемент type=password
([.//input[@type='password']]
), стандартное input
поле ([.//input[not(@type) or @type='' or @type='text']]
) и кнопку отправки ([.//input[@type='submit'] or .//button[not(@type) or @type='' or @type='submit']]
).
Все вместе становится
//form[.//input[@type='password']][.//input[not(@type) or @type='' or @type='text']][.//input[@type='submit'] or .//button[not(@type) or @type='' or @type='submit']]
Это не может соответствовать любой форме, так как для кнопки и поле ввода текста представить это трудно сделать всегда работает правило. Проблема, связанная с такими элементами, заключается в том, что они имеют много значений type
, и если в ней указан недопустимый тип, то они по умолчанию соответствуют состоянию text
или submit
. Например, элемент ввода my имеет атрибут type
, установленный на nonvalidtype
, и он все равно будет стандартным вводом текста.
Кроме того, атрибут type
чувствителен к регистру, и правильное выражение XPath, что считает это более сложная, она также нуждается в XPath 2.0:
//form[.//input[lower-case(@type)='password']][.//input[not(@type) or @type='' or lower-case(@type)='text']][.//input[lower-case(@type)='submit'] or .//button[not(@type) or @type='' or lower-case(@type)='submit']]
Какие модели, которые у вас есть попытки до сих пор? Почему они не работали? Не могли бы вы включить в свой вопрос свои попытки и возможные сообщения об ошибках? Также нам нужно было бы убрать! введите HTML-страницу для работы. В противном случае это просто догадки. –