Как получить 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');
И это прекрасно работает для других элементов формы