Javascript 从Google Chrome控制台填写react表单
我一直在尝试编写一个机器人,通过复制+粘贴脚本到Chrome控制台,在网站上自动完成一些表单。(没有违法行为。)但是,问题是这个网站是用React编写的,这意味着它们用于表单的受控组件会干扰简单的Javascript 从Google Chrome控制台填写react表单,javascript,reactjs,google-chrome,google-chrome-devtools,Javascript,Reactjs,Google Chrome,Google Chrome Devtools,我一直在尝试编写一个机器人,通过复制+粘贴脚本到Chrome控制台,在网站上自动完成一些表单。(没有违法行为。)但是,问题是这个网站是用React编写的,这意味着它们用于表单的受控组件会干扰简单的form.value更改。如果我试图使用类似于form.value=answer的东西来填写表单,我仍然需要在表单上手动按键才能使其工作,这不适合我的自动化需求 到目前为止我所尝试的: -填写表单.value并随后启动按键/keydown/keydup。 -填写表单.value减去一个字母,然后按下一个
form.value
更改。如果我试图使用类似于form.value=answer
的东西来填写表单,我仍然需要在表单上手动按键才能使其工作,这不适合我的自动化需求
到目前为止我所尝试的:-填写
表单.value
并随后启动按键/keydown/keydup。-填写
表单.value
减去一个字母,然后按下一个键,对应于遗漏的字母
出于某种奇怪的原因,在我手动按键之前,回车键不起提交的作用
有人能帮我吗?谢谢 填写表单字段的更好方法 我在对表单进行脏浏览器测试时使用此选项 解决具体问题
document.querySelector('input').focus();
document.execCommand('insertText', false, 'Some Text For the Input');
或者如果每次都要替换文本
document.querySelector('input').select();
document.execCommand('insertText', false, 'Some Text For the Input');
我有一个chrome脚本dev tools->sources->scripts
,我在对表单进行脏测试时使用它
(()=>{
const fillText = (selector, value) => {
document.querySelector(selector).select();
document.execCommand('insertText', false, value);
}
const formFields = [
['[data-ref-name="company"]', 'My Company'],
['[data-ref-name="first_name"]', 'Styks']
]
formFields.forEach(field => fillText(field[0], field[1]));
}
)()
带有insertText参数的document.execCommand通常可以解决此问题。参见示例和文档。
(()=>{
const fillText = (selector, value) => {
document.querySelector(selector).select();
document.execCommand('insertText', false, value);
}
const formFields = [
['[data-ref-name="company"]', 'My Company'],
['[data-ref-name="first_name"]', 'Styks']
]
formFields.forEach(field => fillText(field[0], field[1]));
}
)()