WebPagetest, не заполняющий формы, выдает "Ошибка навигации"
Я новичок в WebPagetest ( https://www.webpagetest.org/) и у меня возникли некоторые проблемы с формами входа. Я использую сценарии и могу перейти на страницу с формой, но похоже, что я неправильно ввожу какие-либо значения формы, и форма не отправляется.
Вот версия моего скрипта:
logData 1
navigate https://www.example.com/secure/login
setValue name=username activation_test
setValue name=password password
submitForm id=signInForm
//clickAndWait id=signInBtn
//exec document.getElementsByTagName('html')[0].style.display = 'none';
sleep 5
block google.com/csi
navigate https://www.example.com/?jbhp=true
Конечно, моя первая мысль - убедиться, что мои HTML-элементы совпадают, но они выглядят хорошо...
- Имя пользователя:
input tabindex = "1" aria-required = "true" class = "success required" id = "username" maxlength = "64" name = "username" placeholder = "Адрес электронной почты или имя пользователя" type="text" value=""
- Пароль:
input tabindex = "2" aria-required = "true" class = "success required" id = "пароль" name = "password" placeholder = "Password" type = "password" value = ""
- Форма:
form action = "#" id = "signInForm" method = "post" class = "form formLarge" novalidate = "novalidate"
- Отправить (проверено в форме; используется только тогда, когда clickAndWait не прокомментирован):
button tabindex = "3" id = "signInBtn" class = "ancBtn lrg" data-track-click = "войти в систему: войти в систему" type = "submit"
Страница результатов теста показывает, что она перемещается в конечное местоположение, как будто она не вошла в систему. Кроме того, я вижу это как часть результатов: Step_2 (Ошибка: Ошибка навигации). К сожалению, если есть лучшая документация относительно того, что конкретно вызвало ошибку навигации, я еще не нашел это.
Наконец, если я переключаюсь с использования submitForm на clickAndWait (что закомментировано в приведенном выше примере), единственное отличие в результате состоит в том, что Step_2 показывает скриншот страницы, а не просто оранжевый блок.
1 ответ
IFrames. Глупые IFrames. Если вы найдете ответ на мой вопрос выше, я бы поспорил, что на вашей странице есть IFrames. В моем случае мой IFrame исходит из того же домена, что и страница браузера - если это не так для вашего IFrame, я не уверен, будет ли это работать.
Чтобы получить доступ к элементам в IFrame, мне пришлось забыть "setValue", "clickAndWait" и так далее. Я должен был идти прямо к Javascript. Сценарий выглядит примерно так:
exec document.querySelector("iframe[id=stupidIFrameId]").contentDocument.querySelector("input[id=password]").value = 'password'
execAndWait document.querySelector("iframe[id=stupidIFrameId]").contentDocument.querySelector("button[id=signInButton]").click()