Как получить WebGuy->fillField для <input type = "email"> в приемочном тесте Codeception?

В Codeception fillField отлично работает, когда у меня есть <input type="text" name="email"> но это не работает, когда <input type="email" name="email">

Я пытался с помощью следующего кода

$I->fillField('input[name=email]', 'user@domain.com');

Также с $I->fillField('email', 'user@domain.com'); Но это не работает. Я получаю следующую ошибку.

ElementNotVisibleException: элемент в данный момент не виден

2 ответа

Я еще никогда не проверял поле электронной почты. Если это не сработает, вы можете выбрать несколько способов, как показано ниже: -

(1) Использование JS

$I->executeJS('window.document.getElementsByName('email')[0].value='###value###'');

(2) Использование низкоуровневого кода веб-драйвера: -

$I->executeInSelenium(function (\Webdriver $webdriver) {
    $webdriver->findElement('###XPATH###')->sendKeys(###value###);
});

Опять же, если вы обнаружите какие-либо проблемы, связанные с Codeception, пожалуйста, поднимите их здесь

Я надеюсь, что это помогает.

Я получил ответ на самом деле, теперь я могу нацеливаться на любой элемент формы XPATH без запуска executeInSelenium

Поэтому в Chrome / Firefox я проверяю DOM и щелкните правой кнопкой мыши и скопируйте xpath,

В качестве примера:
$I->fillField('//*[@id="register-form"]/fieldset/section[3]/div/div/label/input', 'user@domain');

И это прекрасно работает для других элементов формы

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