gpt4 book ai didi

javascript - 如何使我的变量成为全局变量以及如何使程序等待特定条件?

转载 作者:行者123 更新时间:2023-12-02 22:38:15 25 4
gpt4 key购买 nike

我刚刚开始编码,所以我仍然很难理解一些事情。所以我创建了一个脚本 Nightmare,它使用库进行自动测试,但我不明白为什么我的变量 value 不是全局的。

1) 如何从“if 条件”导出“value”并将其显示在控制台中?现在我得到的结果是 1

2) 如何推迟显示 value 变量,直到测试完成?我认为 setTimeout 函数 对此不好。

 const Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true });
let value = '1';


nightmare
.goto('some-link-here')

.type('input#register-form-promo','111112')
.insert('input#register-form-username','Test')
.insert('input#register-form-email','kodjima33@gmail.com')
.insert('input#register-form-password','Password123456')
.evaluate(() => {
var allButtons = document.getElementsByTagName('button');
for (var i = 0; i < allButtons.length; i++) {
if (allButtons[i].innerText == 'Зарегистрироваться') allButtons[i].id = 'loginbutton';
}
})
.click('button[id=loginbutton]')
.evaluate(function (value) {
var element = document.getElementsByClassName('help-block')[3];
if (element.innerHTML == "Значение «Promo» неверно.") {
value = true;
console.log(value) }
else {
value = false;
console.log(value)
}
}
)
.wait(1000)
.end()
.then(result => {

});
setTimeout(function (){

console.log(value);

}, 10000);

最佳答案

您编写的代码是异步的。因此,如果您将 console.log(value) 写入 setTime out 内,您将预测上述代码集将在 10000 毫秒内完成。这是一种错误的方法,因为如果操作花费的时间超过 10000 毫秒,您将无法在 console.log 中看到更新的值。因此,您应该在 evaluate 函数和

之后添加另一个 then()
 const Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true });
let value = '1';
nightmare
.goto('some-link-here')
.type('input#register-form-promo','111112')
.insert('input#register-form-username','Test')
.insert('input#register-form-email','kodjima33@gmail.com')
.insert('input#register-form-password','Password123456')
.evaluate(() => {
var allButtons = document.getElementsByTagName('button');
for (var i = 0; i < allButtons.length; i++) {
if (allButtons[i].innerText == 'Зарегистрироваться') allButtons[i].id = 'loginbutton';
}
})
.click('button[id=loginbutton]')
.evaluate(function (value) {
var element = document.getElementsByClassName('help-block')[3];
if (element.innerHTML == "Значение «Promo» неверно.") {
value = true;
}
else {
value = false;
}
// a new function
doSomething(value)
})
.wait(1000)
.end()
.then(result => {

});

function doSomething(value) {
console.log(value)
}

关于javascript - 如何使我的变量成为全局变量以及如何使程序等待特定条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com