Driver.quit () не закрывает браузер - PullRequest
1 голос
/ 25 января 2020

Вот код:

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 () закрывает браузер и завершает выполнение кода. Вместо этого он просто зависает, не закрывая браузер и не завершая программу.

С чем связана проблема? Нужно ли открывать вкладку для каждого поиска, который я выполняю?

Для полного просмотра кода необходимо go до https://github.com/PrinceMatthew/bitcoinProjects/blob/master/improved_address_verifier.js

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Мне просто нужно было заменить второй 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
    }
}
0 голосов
/ 25 января 2020

Код в теле оператора if (тот, что находится вне функции twentySeconds) никогда не будет выполнен, потому что number всегда 0, когда выполняется условие (number > 2). Вы должны переместить оператор if внутри функции twentySeconds.

Кроме этого, clearInterval(twentySeconds) не будет работать, потому что twentySeconds является функцией, а первый параметр clearInterval должен быть идентификатором интервала ( значение, возвращаемое 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();
  }
}
...