Xpath проверяет количество полей ввода текста

Я пытаюсь написать тест phpUnit в рамках Zend. И на этот раз я ради интереса хочу проверить, что у меня есть два поля ввода типа text в моей контактной форме.

Поэтому я написал эту строку кода:

 $this->assertQueryCount('form#contact-form/input[@type="text"]',2);

Но он возвращает:

1) IndexControllerTest::testCanDisplayContactForm Не удалось подтвердить узел, ОБОЗНАЧАЕМЫЙ form#contact-form/input[type="text"] ПРОИСХОДИТ ТОЧНО 2 раза

Итак, у меня есть форма с контактной формой id. И в этом я хочу получить все поля ввода типа text

Любые идеи или советы?


person sanders    schedule 26.01.2011    source источник
comment
Разве это не должно быть @type ? Это атрибут.   -  person biziclop    schedule 26.01.2011
comment
Да, я изменил его, но получаю ту же ошибку.   -  person sanders    schedule 26.01.2011


Ответы (1)


Этот

form#contact-form/input[type="text"]

больше похож на синтаксис селектора jQuery, это не XPath. Это:

//form[@id = 'contact-form']/input[@type = 'text']

но функция assertQueryCount() на самом деле ожидает селектор CSS:

form#contact-form input[type="text"]
person Tomalak    schedule 26.01.2011
comment
Я получаю эту ошибку: 1) IndexControllerTest::testCanDisplayContactForm DOMXPath::query(): Недопустимое выражение - person sanders; 26.01.2011
comment
@sanders: выражение действительно XPath, это точно. Если это не сработает, то assertQueryCount() на самом деле не ожидает XPath (и быстрый просмотр документация показывает: ожидается селектор CSS). Смотрите расширенный ответ. - person Tomalak; 26.01.2011
comment
@sanders: метод, который ожидает выражения XPath, — assertXpathCount - person ; 27.01.2011