Versuche, mit .click() auf ein Element zu klicken, schlagen in PhantomJS häufig fehl, was zu Fehlern wie „undefiniert ist keine Funktion“ führt. ..". Dieses Problem tritt auf, weil .click() nicht Teil der Standard-DOM-Spezifikation ist.
Um erfolgreich auf ein Element zu klicken, muss ein Ereignis wie folgt erstellt und ausgelöst werden:
function click(el) { var ev = document.createEvent("MouseEvent"); ev.initMouseEvent( "click", true /* bubble */, true /* cancelable */, window, null, 0, 0, 0, 0, /* coordinates */ false, false, false, false, /* modifier keys */ 0 /*left*/, null ); el.dispatchEvent(ev); }
Anschließend können Sie diese Funktion verwenden, um auf das gewünschte Span-Element zu klicken, indem Sie es als Argument übergeben:
click(document.getElementById('idButtonSpan'));
Dieser Ansatz simuliert ein Mausklickereignis, sodass Sie sogar erfolgreich auf Elemente klicken können Wenn sie nicht über eine integrierte Klickfunktion verfügen, beheben Sie die Einschränkungen, mit denen Casper in diesem speziellen Szenario konfrontiert ist.
Das obige ist der detaillierte Inhalt vonWarum schlägt „.click()' in PhantomJS fehl und wie kann ich richtig auf Elemente klicken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!