2016-04-05 9 views
2

Ich spiele um mit CasperJS und versuchen, auf https://registrierung.web.de/#.homepage.loginbox_1.1.registrierungKlicken auf eine Schaltfläche sollte eine Ajax-Antwort erhalten, aber lädt die ganze Seite in CasperJS

So haben einige Free-E-Mail-Alias ​​zu fangen ich das Eingabefeld: „E -Mail-Wunschname: "wo ich einen Namen einfügen möchte, dann klicke auf den" Prüfen "-Button und schäle dann einfach die vorgeschlagenen Accounts.

Bisher habe ich versucht, dass:

var casper = require('casper').create({ 
    pageSettings: { 
     loadImages: false, 
     loadPlugins: true, 
     userAgent:('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0') 
    } 

}); 

var mouse = require("mouse").create(casper); 

casper.start('https://registrierung.web.de/#.homepage.loginbox_1.1.registrierung').viewport(1200,1000); 

casper.then(
    function() {    
     this.sendKeys('.wishname.feedback-panel-trigger.multiReplaceCharsInWishnamelField',"Test"); 
     this.sendKeys('.wishname.feedback-panel-trigger.multiReplaceCharsInWishnamelField',casper.page.event.key.Enter);  
     this.wait(5000);   
    } 
); 
casper.then(function() { 
    this.wait(5000); 
    this.capture('webde.png'); 
    console.log('clicked ok, new location is ' + this.getCurrentUrl()); 
}); 


casper.run(); 

ich müde auch mit der Taste klicken:

casper.wait(6000, function() { 
    this.evaluate(function(){     
     document.querySelector('.wishname.feedback-panel-trigger.multiReplaceCharsInWishnamelField').value = "Test";   
     document.querySelector('#checkAvailabilityBtn').click(); 
      }); 
    }); 
    casper.then(function() { 
     this.capture('webde.png'); 
     console.log('clicked ok, new location is ' + this.getCurrentUrl()); 
    }); 

Mit beiden Möglichkeiten, es ist nur eine komplette von der Seite einreichen und nicht nur die Generation des Vorschlags.

Antwort

2

Klicken Sie auf die Schaltfläche (casper.click("#checkAvailabilityBtn")) scheint gut zu funktionieren.

Hier ist das vollständige Skript ist:

var casper = require('casper').create(); 

casper.start('https://registrierung.web.de/#.homepage.loginbox_1.1.registrierung').viewport(1200,1000); 

casper.then(function() {    
    this.sendKeys('.wishname.feedback-panel-trigger.multiReplaceCharsInWishnamelField', "Test"); 
    this.click("#checkAvailabilityBtn"); 
}); 
casper.wait(5000); 
casper.then(function() { 
    this.capture('test80_webde.png'); 
    console.log('clicked ok, new location is ' + this.getCurrentUrl()); 
}); 

casper.run(); 

By the way, ist nicht in der Lage casper.sendKeys() Tastendrücke zu handhaben wie die Enter-Taste. Sie müssten die Funktion page.sendEvent() von PhantomJS verwenden. Es funktioniert normalerweise auf die folgende Weise, aber scheint nicht in diesem Fall richtig zu funktionieren, weil es die Seite neu lädt:

this.sendKeys('.wishname.feedback-panel-trigger.multiReplaceCharsInWishnamelField', "Test", {keepFocus: true}); 
this.page.sendEvent("keypress", this.page.event.key.Enter); 
+0

hmm, danke, aber es funktioniert nicht gut. Der Klick sendet die ganze Seite. probiere es in einem "normalen" Browser und du siehst was ich meine. – swapfile

+0

Schande über mich! Der "Test" in SendKeys war das Problem. Ich habe es mit "Chrisko" versucht, als es funktioniert ... – swapfile

Verwandte Themen