javascript - 用JS模拟向文本输入框发送数据
问题描述
我有一项任务需要自动化登录表单身份验证。对于此示例,我将向您展示 Tiktok 身份验证表单(移动界面,而不是桌面。电子邮件和密码选项)
如果我以编程方式在字段中输入文本值,则“登录”按钮不会变为活动状态,如果我通过鼠标单击手动关注字段,则该值会消失。这是我运行的两行代码以将值放入:
let email_input = document.getElementsByName("email")[0];
email_input.value = 'sample@email.com';
我知道它需要触发某个事件才能为其 JS 模型分配一个值,但我不知道该怎么做。我尝试使用以下代码将更改或输入事件发送到此文本字段,但没有成功:
let email_input = document.getElementsByName("email");
email_input[0].value = 'sample@email.com';
custom_event = new Event('input');
email_input[0].dispatchEvent(custom_event);
// tried also change, textInput like so:
custom_event = new Event('change');
email_input[0].dispatchEvent(custom_event);
但这似乎没有帮助。因此,我的目标是以检测到的方式将值放入电子邮件和密码两个字段中,并且登录按钮将变为活动状态。
任何建议将不胜感激
解决方案
继续...
测试是否存在正常(非自定义)提交按钮并单击...
Z=W.contentWindow.document.querySelectorAll('input[type="submit"]');
if(Z.length>0){
if(Z[0].hasAttribute('disabled')){Z[0].removeAttribute('disabled');} <--- Enable it if disabled
Z[0].click(); <--- automate click
}
推荐阅读
- iframe - 使用窗口或全局范围将 Redux 存储共享到多个 iframe
- windows - 命令在 cmd 中运行的时间限制
- python - 如何通过 CMD 使用用户输入向字典中添加新的详细信息
- sapui5 - 如何在 QUnit 测试的函数内设置控件的宽度?
- python - 遍历 DataFrame 分类列以创建子图
- html - 角度升级后 class="js-dropdown" 和 class="js-dropdown-menu" 坏了
- css - heroku 部署后的空 css
- reactjs - 升级到 Babel 7 后的错误
- python - 如何解析熊猫中不规则的日期格式?
- javascript - 带有时区的时刻 toDate 没有给出正确的时间