2012-11-23 14 views
10

Napisałem niektóre części aplikacji PhantomJS. Piszę na stronie internetowej, na której piszę nazwę użytkownika i hasło do formularza. Po tym muszę kliknąć na link. Podczas gdy ja dostać ten błąd:PhantomJS kliknij łącze na stronie

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

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

To jest mój kod PhantomJS:

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

A to moja 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

możliwe duplikat [PhantomJS; kliknij element] (http://stackoverflow.com/questions/15739263/phantomjs-click-an-element) – Bergi

Odpowiedz

6

Próbujesz użyć metody click() na zasadzie <a> element, który domyślnie nie jest obsługiwany we wszystkich przeglądarkach. Zamiast tego spróbuj użyć czegoś takiego jak this, gdzie zamiast myLink.click(); będziesz musiał wykonać eventFire(myLink, 'click');.

+3

To tylko daje mi: ReferenceError: Nie można znaleźć zmiennej: eventFire – mikkeljuhl

+0

Nie widziałem tam linku . Przepraszam. – mikkeljuhl

+0

pomoc. próbując użyć tego w phantomjs i uzyskać błąd referencyjny bez względu na wszystko. –

2

lub zawierać jQuery i zrobić coś takiego:

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' działa poprawnie, ale po tym otrzymuję' ReferenceError: Can not find variable: $ '. – loretoparisi

+0

... ok Muszę przejść do kontekstu strony dokumentu z 'page.evaluate'. W tym momencie dostaje '$' ale nawigacja nie występuje - nie otrzymuję wywołania zwrotnego w 'onNavigationRequested' – loretoparisi

Powiązane problemy