使用 JavaScript,我如何让此代码自动填充用户名并单击按钮、延迟或等待,然后自动填充密码并单击登录?


document.getElementsByName("Username")[0].value = 'FamilyGuy'
function myFunction(){
//pag 1, delay a second. Giving user name time to fill
document.getElementById("NextButton").click();
}
//delay
setTimeout(myFunction, 1000);
function myFunction(){
//page 2, delay a second. Giving passwrd time to fill befor logging in
document.getElementsByName("Password")[0].value = 'this1sth3p4ssw0rd!'
}
//delay
setTimeout(myFunction, 1000);
document.getElementById("LoginButton").click();

//我正在使用此扩展插件
[1]:https://i.stack.imgur.com/LNMiJ.png

setTimeout是一个异步函数。它不会暂停后面代码的执行

这意味着,在您的示例代码中,两个超时将同时运行,并且您的登录按钮将立即被按下。要解决这个问题,请将第二个超时放在第一个函数的末尾,而不是放在代码的主体中。还将登录按钮的按下放在第二个功能内。

document.getElementsByName("Username")[0].value = 'FamilyGuy'

function myFunctionB(){
//page 2, delay a second. Giving passwrd time to fill befor logging in
document.getElementsByName("Password")[0].value = 'this1sth3p4ssw0rd!'
document.getElementById("LoginButton").click();
}
function myFunctionA(){
//pag 1, delay a second. Giving user name time to fill
document.getElementById("NextButton").click();

//delay
setTimeout(myFunctionB, 1000);
}
//delay
setTimeout(myFunctionA, 1000);

我不知道NextButton的操作方式,但使用延迟等待Username值更改可能是不必要的。考虑使用以下代码:

function myFunction(){
document.getElementsByName("Password")[0].value = 'this1sth3p4ssw0rd!'
document.getElementById("LoginButton").click();
}
document.getElementsByName("Username")[0].value = 'FamilyGuy'
document.getElementById("NextButton").click();

//delay
setTimeout(myFunction, 1000);

这可能是实现下述(假设为所需(目标的一种可能实现方式:

  1. 显示一个带有输入框用户名、密码和按钮"下一步"、"登录"的屏幕
  2. 等待一段时间(比如1.5秒(后,用户名会自动填充
  3. 另一个2秒的延迟和"下一步"按钮点击由程序触发
  4. 延迟2秒后,密码自动填充
  5. 最后,再延迟1秒,程序触发"登录"按钮

时间延迟只是在代码段中随机分配的,可以根据需要进行更改。

了解使用这种方法的背景肯定会有所帮助,以满足更合适的答案。

const btnClicked = name => console.log(`${name} button clicked `);
setTimeout(
() => {
document.getElementById("Username").value = 'FamilyGuy';
setTimeout(
() => {
document.getElementById("NextButton").click();
setTimeout(
() => {
document.getElementById("Password").value = 'this1sth3p4ssw0rd!';
setTimeout(
() => {
document.getElementById("LoginButton").click();
},
1000
)
},
2000
)
},
2000
)
},
1500
);
<html>
<body>
<input id='Username' />
<button id='NextButton' onclick='btnClicked("Next")'>Next</button>
<input id='Password' />
<button id='LoginButton' onclick='btnClicked("Login")'>Login</button>
<script src='script.js'></script>
</body>
</html>

最新更新