Для печати цикла немедленно console.log () для всех циклов, в то время как остальная часть цикла все еще выполняется? - PullRequest
0 голосов
/ 24 июня 2018

Я довольно новичок в Selenium и Nodejs, поэтому, пожалуйста, не судите меня слишком сильно. Я пытаюсь выяснить, почему console.log() кажется асинхронным (?) В моем цикле for ?!

Почему мой тестовый цикл for выводит на консоль сразу все строки console.log (), в то время как общая функция все еще работает? Я не понимаю этого. Я думал, что setTimeout() должен будет дать команду узлу сделать асинхронную работу?

Мой фрагмент кода:

function cycleClicks(j) {
    for (let i = 0; i < j; i++) {
        tabStrategyTester.click();
        driver.sleep(1000);
        if (tabStrategyTester.isDisplayed()) {
            console.log("angezeigt");
        }
        else {
            console.log("nicht angezeigt");
        }
    }
}
cycleClicks(10);

Консоль отображает мне 10-кратное «angezeigt», даже если браузер даже не запустился до тех пор. Таким образом, функция isDisplayed() возвращает true, пока браузер не работает. Кроме того, цикл for не работает синхронно, насколько я понимаю.

Буду признателен за любую помощь в этом!

1 Ответ

0 голосов
/ 24 июня 2018

Уверен, что драйвер является только оберткой - указание sleep будет означать, что драйвер будет ждать перед выполнением того, что еще находится в его очереди, но это совершенно отдельно из ветки Javascript. Если вы хотите, чтобы ваши console.log s появлялись с интервалом в 1 секунду, вы должны использовать Promises и await вместо этого (что является асинхронностью на основе Javascript, а не асинхронной на основе Selenium):

const sleep = ms => new Promise(res => setTimeout(res, ms));

async function cycleClicks(j) {
  for (let i = 0; i < j; i++) {
    tabStrategyTester.click();
    await sleep(1000);
    if (tabStrategyTester.isDisplayed()) {
      console.log("angezeigt");
    }
    else {
      console.log("nicht angezeigt");
    }
  }
}
cycleClicks(10);

Но все же было бы лучше, если это возможно, сохранить асинхронность, ограниченную частью драйверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...