Как программно войти через интерфейс Auth0 Lock? - PullRequest
2 голосов
/ 24 марта 2019

Я пытаюсь написать пользовательский скрипт WebPageTest , который включает программный вход в интерфейс блокировки Auth0 моего веб-приложения в качестве первого шага, но он не смог заставить его работать,

Я настроил частный сервер WebPageTest, чтобы ближе познакомиться с тем, что происходило, и из журналов сервера кажется, что скрипт WebPageTest устанавливает значение полей имени пользователя / пароля и нажимает кнопку отправки с использованием vanilla DOMманипуляции (т. е. querySelector, click и т. д.), но при отправке формы Auth0 Lock не распознает, что в этих полях что-то было заполнено.Есть ошибки, утверждающие, что эти поля не могут быть пустыми при нажатии кнопки «Отправить».

Я использовал локальный агент WebPageTest Node на своем частном сервере для успешного входа в систему через виджет блокировки, но не могуне знаю, как получить журналы производительности, используя этот подход (результаты не отображаются после того, как я попадаю на страницу результатов теста).Такой подход входа в систему, кажется, работает, потому что значения, входящие в поля ввода, программно «вводятся» через функцию WebDriver sendKeys.

Я встречал этот связанный пост на форумах Auth0 , ноне знаю, как я могу включить то, что там рекомендуется, в контекст скрипта WebPageTest.

Вы можете воспроизвести проблему, с которой я столкнулся, перейдя к образцу блокировки Auth0 в верхней части этой страницы и запустив следующий код в консоли devtools:

document.querySelector('.auth0-lock-input[name=email]').value = 'hello@hello.com';
document.querySelector('.auth0-lock-input[name=password]').value = 'testing';
setTimeout(() => document.querySelector('.auth0-lock-submit').click(), 1000)

Я ожидаю, что смогу программно ввести информацию о поле ввода и отправить ее через виджет Auth0 Lock, но не смог этого сделать.У кого-нибудь есть решение этого?

1 Ответ

0 голосов
/ 18 июня 2019

Страница входа использует javascript / ajax для создания формы входа и ее элементов ввода. Вы просто делаете вещи слишком быстро, не ожидая, что элементы будут созданы первыми, чтобы заполнить и отправить их. Просто подождите, пока форма и ее элементы ввода станут доступными / видимыми, а затем продолжите процесс входа в систему.

Кроме того, избегайте использования подхода Sleep () / setTimeout () для решения ожиданий. Это просто неправильно, и это проблема в ожидании материализации себя, как только вы измените среду, в которой работает ваш код. Используйте правильные методы ожидания из вашей тестовой среды и ожидайте, пока эти элементы станут доступными.

...