首页 > 解决方案 > Driver.quit() 不关闭浏览器

问题描述

这是代码:

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

标签: javascriptselenium-webdriverfirefoxwebdriver

解决方案


语句主体中的代码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();
  }
}

推荐阅读