2012-11-23 5 views
10

Ich habe einige Teile einer PhantomJS-Anwendung geschrieben. Ich analysiere auf einer Website, wo ich Benutzername und Passwort zu einem Formular schreibe. Danach muss ich auf einen Link klicken. Während ich diesen Fehler:PhantomJS klicken Sie auf einen Link auf einer Seite

TypeError: 'undefined' is not a function (evaluating 'myLink.click()') 

    phantomjs://webpage.evaluate():11 
    phantomjs://webpage.evaluate():22 
    phantomjs://webpage.evaluate():22 

Das ist mein PhantomJS Code:

if(document.getElementById("m_Content_submitbtn2").getAttribute('data-role') == "button"){ 
     var myLink = document.getElementById("m_Content_submitbtn2"); 
    myLink.click(); 
} 

Und das ist mein Link:

<div class='button'><a href="#" data-role="button" tabindex='0' onclick='WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;m$Content$submitbtn2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true)); return false;' id="m_Content_submitbtn2">Log ind</a></div>&nbsp; 
+1

möglich Duplikat [PhantomJS; klicke auf ein Element] (http://stackoverflow.com/questions/15739263/phantomjs-click-an-element) – Bergi

Antwort

6

Sie versuchen, die click() Methode auf ein <a> zu verwenden Element, das standardmäßig nicht in allen Browsern unterstützt wird. Versuchen Sie stattdessen, etwas wie this zu verwenden, wo Sie statt myLink.click();eventFire(myLink, 'click'); tun müssen.

+3

Das gibt mir nur: ReferenceError: Kann keine Variable finden: eventFire – mikkeljuhl

+0

Habe nicht gesehen, dass dort ein Link war . Es tut uns leid. – mikkeljuhl

+0

Hilfe. versuchen, dies in phantomjs zu verwenden und Referenzfehler egal was zu bekommen. –

2

Oder gehören jQuery und tun so etwas wie:

var page = require('webpage').create(); 
page.open('http://www.sample.com', function() { 
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
    page.evaluate(function() { 
     $("button").click(); 
    }); 
    phantom.exit() 
    }); 
}); 
+0

'page.includeJS' funktioniert ordnungsgemäß, aber ich bekomme eine' ReferenceError: Kann Variable nicht finden: $ 'danach. – loretoparisi

+0

... ok Ich muss sowieso auf 'document' Seite Kontext mit' page.evaluate' wechseln. An diesem Punkt wird das '$' angezeigt, aber die Navigation findet nicht statt - ich bekomme den Callback nicht in 'onNavigationRequested' – loretoparisi