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()
Другие вопросы по тегам