2017-12-30 14 views
0

Ich habe mehrere Methoden des Angriffs versucht Casper das Element in Frage zu sehen, die geladen wird über eine zweite GET-Anfrage, die eine Menge von Json zurück, um in die Seite geladen wird DOM.CasperJS Element nicht nach Klasse zu finden, wenn über Ajax geladen

Die Sache ist this.waitForResource(url,....) funktioniert gut Durchführung der Erfolg Rückruf nach etwa 2 Sekunden (Ich habe eine Zeitüberschreitung von 20 eingestellt).

Ich habe dann versucht zuerst this.click('.class-name') innen gefolgt von this.evaluate(function(){document.getElementsByClassName('.class-name')[0].click()});

Klicken Sie über casperJS gibt CasperError: Cannot dispatch mousedown event on nonexistent selector: .class-name während ich bin nicht sicher, was die DOM Aktion tut - mein this.on('resource.received',....) Anruf sofort nach nichts erfassen, damit ich nehme an, es hatte auch keine Wirkung auch nicht. Der DOM-Code scheint manchmal in Casper stumm zu sein.

Was kann getan werden, um Elemente auszuwählen und auf sie zu klicken, um Dateien erst herunterzuladen, nachdem sie über Ajax in das DOM geladen wurden?

Gibt es dafür eine bessere Bibliothek als CasperJS?

Antwort

0

Casper hat waitForSelector und waitFor Methoden, die Ihren Bedürfnissen entsprechen.

waitFor warten, bis bereitgestellt Funktion

waitForSelector warten, bis vorgesehen Wähler in DOM true zurück, so dass ich denke, das ist diejenige, die Sie verwenden möchten ist.

Additionaly ist es waitUntilVisible die bis ein Element warten, ist auf dem Bildschirm sichtbar

Verwandte Themen