2016-10-06 3 views
0

J'écris un script cauchemar pour tester un site web. Le problème concerne les événements de page. Il y a un scriptcomment utiliser les événements page nightmarejs

<button id="btn" onclick="myFunction()">Try it</button> 
 
    <script> 
 
    function myFunction() { 
 
    confirm("Press a button!"); 
 
    } 
 
    </script>

et le script de cauchemar est

var Nightmare = require('nightmare'); 
 

 

 
const path = require('path'); 
 

 
var nightmare = Nightmare({ 
 
    show: true, 
 
    webPreferences: { 
 
    preload: path.resolve("pre.js") 
 
    //alternative: preload: "absolute/path/to/custom-script.js" 
 
    } 
 
}) 
 

 
var confirm = 'confirm'; 
 
nightmare.on('page', function(confirm, message, response){ 
 
    return true; 
 
}); 
 

 
nightmare 
 
    .goto('http://localhost:3000/index.html') 
 
    .click('#btn') 
 
    .wait(1000) 
 
    .evaluate(function() { 
 
    return "just value";//document.querySelector('#main .searchCenterMiddle li a').href 
 
    }) 
 
    .end() 
 
    .then(function (result) { 
 
    console.log(result) 
 
    }) 
 
    .catch(function (error) { 
 
    console.error('Search failed:', error); 
 
    }); 
 

 
    function testing(arg){ 
 
    console.log(arg); 
 
    }

Exécuté comme node test.js

Il ouvre la fenêtre du navigateur et cliquez sur le bouton. Mais ne sais pas comment appuyer sur le bouton «OK» dans la fenêtre de confirmation pour que je puisse passer au test suivant. La réponse non requise du bouton 'OK' suffit de cliquer sur le bouton 'OK' dans la fenêtre de confirmation.

toute aide est très appréciée.

Merci

Répondre

0

Les default preload scriptwindow.prompt overrides, window.alert et window.confirm. Vous remplacez le script par défaut par un script personnalisé. Si votre script de préchargement personnalisé ne reproduit pas le comportement du script par défaut, ce que vous avez ne fonctionnera pas.

Pour être complet, c'est un snip à partir du script de pré-charge par défaut qui montre la méthode window remplace ainsi que les messages IPC pour câbler les événements jusqu'à:

// overwrite the default alert 
    window.alert = function(message){ 
    __nightmare.ipc.send('page', 'alert', message); 
    }; 

    // overwrite the default prompt 
    window.prompt = function(message, defaultResponse){ 
    __nightmare.ipc.send('page', 'prompt', message, defaultResponse); 
    } 

    // overwrite the default confirm 
    window.confirm = function(message, defaultResponse){ 
    __nightmare.ipc.send('page', 'confirm', message, defaultResponse); 
    }