【发布时间】:2020-03-31 19:32:12
【问题描述】:
我正在尝试编写一个在this login page 中自动输入用户名的小脚本。根据 Inspector (of Firefox),输入字段被标识为 CSS 选择器input.input.input-text.input-default。所以我写了下面的脚本。
(function() {
"use strict";
window.setTimeout(() => {
const username = document.querySelector('input.input.input-text.input-default');
username.setAttribute('value', 'test');
}, 100); //waits a little until the input form becomes available
})();
这个输入用户名test其实是成功的,但是当我输入密码点击提交按钮时,报错信息
用户名是必填项
即使字段不为空也会打印。
之后,如果我单击用户名字段,附加任何字符,删除该字符,然后再次单击提交按钮(见下面的 gif),现在该字段的值被正确解释并出现错误消息
身份验证失败
打印出来了,这完全没问题,因为我们使用了无效的test 作为用户名。
我认为这种行为来自与输入字段相关的事件。据 Inspector 称,focus、invalid、keydown、mousedown 和 onChange 事件绑定到该字段。但是,即使我执行
username.dispatchEvent(new Event('onChange'));
或者这样,该值仍然被解释为空。
两个问题:
如何使脚本在这种情况下工作?
如果你成功地使脚本工作,你能告诉我你是如何分析网站的代码结构的吗?现在我用 Inspector 但似乎不够用。
【问题讨论】:
-
请同时提供表单的HTML代码。
-
@ikiK 你可以访问我在 OP 第一行链接的网站。很抱歉我不能在这里粘贴整个代码,因为它很复杂而且不是开源的。
标签: javascript html forms dom