这是代码:
var number = 0;
function twentySeconds() {
if (number <= 1) {
loop();
number++;
console.log('Try number: ' + number);
}
};
if (number > 2) {
clearInterval(twentySeconds)
console.log('Closing program!')
driver.quit()
return;
}
setInterval(twentySeconds, 20000);
因此,我正在创建一个Firefox实例,然后使用它多次搜索网站。尝试多次后,程序应停止(在这种情况下,第三次尝试后,程序应停止)。 问题在于,最后(当第三次检查结束时)driver.quit()将关闭浏览器并结束代码的执行。相反,它只是冻结,而无需关闭浏览器并结束程序。
是什么原因引起的?我需要为每次搜索打开一个标签吗?
有关代码的完整视图,请转到https://github.com/PrinceMatthew/bitcoinProjects/blob/master/improved_address_verifier.js
答案 0 :(得分:0)
if
语句正文中的代码(在twentySeconds
函数外部的代码)将永远不会执行,因为在以下情况下,number
始终为0
: {1}})被评估。您应该将该if语句移至number > 2
函数中。
除此之外,twentySeconds
不起作用,因为clearInterval(twentySeconds)
是一个函数,并且twentySeconds
的第一个参数应该是区间的ID(clearInterval
返回的值)
尝试一下:
setInterval(..)
答案 1 :(得分:0)
按照Titus的指示,我只需要用if
替换第二个else
即可。
结果:
var number = 0;
var intervalId = setInterval(twentySeconds, 20000);
function twentySeconds() {
if (number <= 1) { //(number <= x), where x is the number of times the program should execute - 1
loop();
number++;
console.log('Try number: ' + number);
}
else {
clearInterval(intervalId)
console.log('Closing program!')
driver.quit(); //close browser and quit program
}
}