这是代码:
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
if
语句(twentySeconds
函数外部的代码(正文中的代码永远不会被执行,因为在计算条件(number > 2
(时总是0
number
。您应该将该 if 语句移动到twentySeconds
函数中。
除此之外,clearInterval(twentySeconds)
不起作用,因为twentySeconds
是一个函数,要clearInterval
的第一个参数应该是间隔的 ID(setInterval(..)
返回的值(。
试试这个:
var number = 0;
var intervalId = setInterval(twentySeconds, 20000);
function twentySeconds() {
if (number <= 1) {
loop();
number++;
console.log('Try number: ' + number);
}
if (number > 2) {
clearInterval(intervalId)
console.log('Closing program!')
driver.quit();
}
}
我只需要用else
替换第二个if
,就是这样,在遵循提图斯给出的指示之后。
结果:
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
}
}