Селекторы Codeceptjs: Как выбрать поле ввода "email"?

Мне действительно нужна помощь с синтаксисом.

У меня есть поле ввода:

<input class="email__field ng-pristine ng-empty ng-valid-email ng-invalid ng-invalid-required ng-touched" name="email" ng-model="authForm.email" ng-keypress="keypress($event);" ng-disabled="false" focused="true" required="" style="" type="email">

Согласно документации: http://devdocs.io/codeceptjs/helpers/seleniumwebdriver/index

I.fillField('email', 'hello@world.com');

должен найти элемент по имени. Но тест завершается неудачно с сообщением об ошибке: "Адрес электронной почты не найден по имени | текст |CSS|XPath"

Синтаксис неправильный или может быть что-то не так с веб-драйвером? Например, предыдущая команда / шаг:

I.amOnPage(some url here); 

и это работает, поэтому я думаю, что веб-драйвер должен быть в порядке.

1 ответ

Решение

Синтаксис, который вы использовали, был правильным. Расположение элемента может иметь некоторые проблемы.

Попробуйте отладить проблему следующим образом:

1) Добавьте ожидание -> I.wait(2) секунды между "I.amOnPage" и "I.fillField"
2) Попробуйте щелкнуть элемент "электронная почта" и затем fillField I.click ('// input [@ name =' email ']'); I.fillField ('email');
3) Попробуйте передать xpath для fillField, возможно, там был другой элемент, который отключен. например: I.fillField('//input[@ng-model="authForm.email"][@name='email']')

А также, пожалуйста, убедитесь, что элемент не был внутри iframe, если это означает, что вам нужно сначала переключиться на фрейм, а затем выполнить действия

Другие вопросы по тегам