2016-11-17 12 views
0

Я пытаюсь использовать checkField() в первый раз, он установлен флажок, но не проверяет его.checkField() не проверяет соответствие норке

HTML-:

<label> 
    <input class="sr-only" value="on" type="checkbox"> 
    <span>I want an open return</span> 
<label> 

Посмотрите на код:

$this->getSession()->getPage()->checkField("I want an open return"); 

Я также попробовать его:

$this->getSession()->getPage()->find("css", "input[type=checkbox].sr-only")->check(); 

Боты не возвращает какой-либо ошибки, но я могу видеть флажок не проверяется при запуске теста.

Последующий код возврата BOOL (ложь), как и ожидалось:

$this->getSession()->getPage()->find("css", "input[type=checkbox].sr-only")->isChecked(); 
+0

Убедитесь, что элемент найден, установлен флажок. Добавьте html для этого элемента, если это возможно. – lauda

+0

Я положил больше информации сейчас. –

+0

Добавьте точку останова/сон после того, как вы установите флажок и посмотрите, был ли он установлен или нет. – lauda

ответ

0

checkField() может не работать, потому что это зависит от атрибута элемента value, если это true/false и у вас есть on/off, которые терпят неудачу в оценке статус флажка, то же самое для check().

В качестве альтернативы check вы можете найти элемент и click():

find("css", "input[type=checkbox].sr-only")->click(); 

Проверка проверяются isChecked() потерпят неудачу по той же причине.

Вам может понадобиться сделать пользовательскую проверку, например, получить значение атрибута value и проверить его, если это on или off и бросить исключение или вернуть статус по мере необходимости.

Вещи, чтобы иметь в виду:
- инспектировать страницу и проверить, если селектор в порядке - убедитесь, что переключатель находит только один элемент, или первый элемент, найденный в списке является один вам нужно - убедитесь, вы ждете элемента при необходимости - использование страницы объектов - класс, который содержит этот щелчок/проверка должна расширить объект страницы и строка должна выглядеть следующим образом:

$this->find("css", "input[type=checkbox].sr-only")->click(); 
+0

Да, я использую версию behif 3.2.1 Но когда я попытался использовать $ this-> find ("css", "input [type = checkbox].sr-only ") -> check(); Я видел Неустранимая ошибка: вызов неопределенного метода WidgetContext :: find() (Behat \ Testwork \ Call \ Exception \ FatalThrowableError) –

+0

Да, в зависимости от того, что распространяется этот класс , а затем сохраните его, как есть. Вы проверили, найдут ли селекторы один или несколько элементов на странице? – lauda

+0

Этот код: 'var_dump ($ this-> getSession() -> getPage() -> find (" css "," input [type = checkbox] .sr-only "));' Возвращает: [https://codeshare.io/2jklK5] Я не понимаю возврата. –

0

Наконец, это работает, после изменения " input "на" label ", используя следующую строку кода:

$this->getSession()->getPage()->findAll("css", ".div-name .second-div-name label")[0]->click();

Мой флажок был внутри двух разделов, потому что у меня есть эти два имени divs выше.

=)