burattinaio: attendere N secondi prima di continuare la riga successiva

in burattinaio vorrei attendere un tempo definito prima di andare al seguente riga di codice.

Ho provato a mettere un setTimeout in un di valutare la funzione, ma sembra essere semplicemente ignorato

console.log('before waiting');
await page.evaluate(async() => {
  setTimeout(function(){
      console.log('waiting');
  }, 4000)
});
console.log('after waiting');

Questo codice non aspettare e basta scrivere prima di aspettare e dopo un’attesa di

Sapete come fare?

  • attendono pagina.valutare(async() => { setTimeout(function(){ console.log(‘attesa’); }, 4000);}); il codice non è di destra , al di sopra è il diritto

 

6 Replies
  1. 58

    È possibile utilizzare un po ‘ di promessa funzione,

    function delay(time) {
       return new Promise(function(resolve) { 
           setTimeout(resolve, time)
       });
    }

    Allora, ogni volta che si desidera un ritardo.

    console.log('before waiting');
    await delay(4000);
    console.log('after waiting');

    Se è necessario utilizzare un burattinaio utilizzare il builtin funzione waitFor.

    await page.waitFor(4000)

    Se si vuole ancora utilizzare la pagina.valutare, risolvere dopo 4 secondi. Non risolvere nulla.

    await page.evaluate(async() => {
        await new Promise(function(resolve) { 
               setTimeout(resolve, 1000)
        });
    });

    Ma credo che si può semplicemente utilizzare i primi due esempi.

    • sei sicuro che questo è il lavoro ? Non puoi usare il delay() all’interno della pagina.valutare() non appartiene al suo contesto.
    • Io sono abbastanza sicuro che la funzione di ritardo e la pagina.valutare sono diversi esempi.
  2. 10

    È possibile utilizzare una delle seguenti opzioni per attendere un secondo:

    await page.waitFor(1000);
    await frame.waitFor(1000);
    await new Promise(r => setTimeout(r, 1000));

    In alternativa, ci sono molti Burattinaio funzioni che includono un built-in delay opzione, che può tornare utile per i tempi di attesa tra alcuni eventi:

    //Click Delay
    //Time to wait between mousedown and mouseup in milliseconds. Defaults to 0.
    
    await page.click('#example', {delay: 1000});
    await frame.click('#example', {delay: 1000});
    await elementHandle.click({delay: 1000});
    await page.mouse.click(0, 0, {delay: 1000});
    
    //Type Delay
    //Time to wait between key presses in milliseconds. Defaults to 0.
    
    await page.type('#example', 'Hello, world!', {delay: 1000});
    await frame.type('#example', 'Hello, world!', {delay: 1000});
    await elementHandle.type('Hello, world!', {delay: 1000});
    await page.keyboard.type('Hello, world!', {delay: 1000});
    
    //Press Delay
    //Time to wait between keydown and keyup in milliseconds. Defaults to 0.
    
    await elementHandle.press('Backspace', {delay: 1000});
    await page.keyboard.press('Backspace', {delay: 1000});
  3. 1

    Provare questa funzione.

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

    uso

      async function demo() {
        console.log('Waiting...');
        await sleep(3000);
        console.log('ok');
      }
    
      demo();
  4. -5

    La sintassi è incompleta.

    Prova questo…

    await page.evaluate(async() => {
        setTimeout(function(){
            console.log('waiting');
        }, 4000)
    });
    • grazie per il vostro aiuto ,ho modificato la domanda , mi dispiace per il piccolo errore, ma davvero mi chiedo come attendere

Lascia un commento