2013-02-04 11 views
5

Wie kann ich testen, ob eine Alarmbox auf meiner Seite aufgerufen wurde? Kann ich den Text der Alarmbox greifen und auswerten?CasperJS und Alarmfelder

in CasperJS Mein Klick wird folgendermaßen gemacht:

casper.waitForSelector('a[href="javascript:UserLogin()"]', 
    function success() { 
     this.test.comment("Submiting the bad login info"); 
     this.test.assertExists('a[href="javascript:UserLogin()"]'); 
     this.click("a#h_login"); 
    }, 
    function fail() { 
     this.test.assertExists('a[href="javascript:UserLogin()"]'); 
}); 

Die Userlogin Funktion überprüft, und in diesem Fall gibt dies:

alert('Login has failed.'); 

Wie kann ich das?

Antwort

13

Sie müssen die remote.alert hören event:

casper.on('remote.alert', function(message) { 
    this.echo('alert message: ' + message); 
    // or if you want to test it 
    this.test.assertMatch(message, /Login has failed/); 
}); 

Ein Versuch, es Synchron mehr etwas zu machen:

function testAlert(message) { 
    this.test.assertMatch(message, /Login has failed/); 
} 

casper.then(function() { 
    // temporarily registering listener 
    this.on('remote.alert', testAlert); 
}); 

casper.waitForSelector('#login', function success() { 
    this.test.pass('selector was found'); 
    this.click("#login"); 
}, function fail() { 
    this.test.fail('selector was found'); 
}); 

casper.then(function() { 
    this.removeListener('remote.alert', testAlert); 
}); 
5

Version 1.1-beta4 die casper.waitForAlert function bietet. Damit können Sie schönere Tests schreiben, wenn Sie auf verschiedene Warnmeldungen auf der Seite reagieren müssen.