continuous-integration - 如何通过 Auth0 Lock 界面以编程方式登录?
问题描述
我正在尝试编写一个WebPageTest 自定义脚本,该脚本涉及以编程方式登录到我的 Web 应用程序的Auth0 Lock 界面作为第一步,但无法使其正常工作。
我设置了一个私有 WebPageTest 服务器来仔细查看发生了什么,并且从服务器日志看来,WebPageTest 脚本正在设置用户名/密码字段的值并使用 vanilla DOM 操作(即querySelector
,click
等)单击提交.) 但在提交表单时,Auth0 Lock 无法识别这些字段中已填写任何内容。单击提交时,错误提示这些字段不能为空。
我已将本地WebPageTest 节点代理与我的私人服务器一起使用,以通过 Lock 小部件成功登录,但不知道如何使用该方法获取性能日志(进入测试结果页面后没有结果显示)。这种登录方法似乎有效,因为进入输入字段的值通过 WebDriversendKeys
函数以编程方式“输入”。
我在 Auth0 论坛上看到了这篇相关的帖子,但不知道如何将那里推荐的内容整合到 WebPageTest 脚本的上下文中。
您可以通过转到此页面顶部的 Auth0 Lock 示例并在您的 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 小部件提交,但无法这样做。有人对此有解决方案吗?
解决方案
登录页面使用 javascript/ajax 创建登录表单及其输入元素。您只是做得太快了,没有等待首先创建元素,以便填充和提交它们。只需等待表单及其输入元素变为可用/可见,然后继续您的登录过程。
此外,避免使用 Sleep() / setTimeout() 方法来解决等待问题。这是错误的,一旦您更改代码运行的环境,它就会等待自己实现。使用测试框架中的正确等待方法,并正确等待这些元素变为可用。
推荐阅读
- javascript - 在 XMLHttpRequest() 之后 PHP 定义不起作用
- c - 结构成员大小大于为结构分配的内存
- javascript - 如何为特定用户实施旧密码和新密码?
- lua - 为什么 ChunkSpy .function 部分有四个参数?
- gdb - 如何通过设置标志来欺骗 gdb 中的 ja、xor 和 jle 指令?
- git - 如何从 git 存储库中完全删除文件的特定版本?
- gcc - 有没有像 -Wl,--whole-archive 这样的方法来强制 .so 库像 gcc 中的 .a 库一样加载?
- java - 我正在尝试使用 json 文件从 url 获取 youtube 标题,但我没有得到任何结果,我也没有得到任何异常
- python - 频谱图生成
- javascript - 无论变量范围如何,函数都会继续返回未定义