这是代码:

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)时0始终是number > 2。您应该将该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();
  }
}

09-17 21:44