首页 > 解决方案 > 用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);

但这似乎没有帮助。因此,我的目标是以检测到的方式将值放入电子邮件和密码两个字段中,并且登录按钮将变为活动状态。

任何建议将不胜感激

标签: javascript

解决方案


继续...

测试是否存在正常(非自定义)提交按钮并单击...

  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

  } 

推荐阅读