2016-06-02 1 views
1

СценарийBehat селектора CSS - Поиск по классам может быть сделан только с первым классом

Скажут у вас есть поле ввода с несколькими классами CSS, такие как:

<input class="form-control existing-user" value="Darth Darth Binks"/> 

И в behat шаг, вы хотите найти его значение, найдя элемент ввода по классу CSS.

Это работает

$field = $this->getPage()->findAllBy('css', 'form-control')[0]->getValue(); 
// $field is now "Darth Darth Binks" 

Это не работает

$field = $this->getPage()->findAll('css', 'existing-user')[0]->getValue(); 
// $field is now null 

Вопрос

Какая разница здесь? Нужно ли мне делать что-то конкретное, если я ищу один из классов, которые НЕ написаны первым?

+0

[Итерации элементов div с тем же именем класса, чтобы получить их содержимое] (http://www.inanzzz.com/index.php/post/vsok/iterate-div-elements-with-same-class-name-to -get-their-contents), [Нажмите на элемент с тегом идентификатора с селектором CSS] (http://www.inanzzz.com/index.php/post/2y0l/click-on-an-element-that -has-an-id-tag-with-css-selector), [Получить содержимое данного элемента с идентификатором] (http://www.inanzzz.com/index.php/post/97ju/get-the-content -of-given-element-with-id), [Нажмите на элемент с идентификационным тегом] (http://www.inanzzz.com/index.php/post/pzxm/click-on-an-element- что-есть-ан-ID-теги) – BentCoder

ответ

1

В обоих примерах вы должны использовать действительный селектор css, для класса вы должны использовать '.' перед классом. Некоторые Валидный CSS селекторы для предоставленного элемента ввода являются:

input.form-control 
 
input.existing-user 
 
input.form-control.existing-user

Так допустимое использование будет:

$field = $this->getPage()->findAll('css', '.existing-user')->getValue(); 

Также, пожалуйста, имейте в виду, что метод FindAll не будет throw исключение, если элемент не найден, вместо этого будет возвращать значение null и использование значения get в null приведет к фатальной ошибке php. Внедрение обработки исключений и использование/реализация метода waitForElement, если необходимо.

Смежные вопросы