PhantomJs klicken auf links oder das ausführen der on-page-Funktionen

Bin ich auch einfach nur verwendet, um PhantomJs und so weit es ist wirklich cool.

Ich versuche zu Crawlen einer Website und erhalten Sie Daten über die Produkte auf der Website. Jeder Produkt-Seite lädt mit der Standard-Farbe des Produktes sichtbar. Wenn Sie klicken Sie auf ein Farbfeld, vertauscht es die neue Farbe aus, durch ausführen einer Funktion. Jedes anklickbare Farbfeld-element sieht wie folgt aus:

<input type="image" id="swatch_0" onclick="pPage.getColor(0);" src="http://www.site.com/img50067.jpg">

getColor aktualisiert die Miniaturansicht und der Preis für die Farbe. Die id-Schritten für jede verfügbare Farbe (swatch_0, swatch_1, etc.) und übergebene argument zu getColor Schritten als gut. Ich will zu Durchlaufen, jede Farbe mit PhantomJs und ziehen Sie die relevanten Daten für jede.

Hab ich geladen die Seite geladen jQuery, und ziehen Sie die Daten für die initial geladen Farbe, aber nichts scheint mir zu erlauben, ausführen, klicken Sie auf Ereignisse.

hier ist, was ich versuche:

page.evalaute(function){
  var selection = $('#confirmText').text(); //name of the color
  var price = $('#priceText').text();       //price for that color

  console.log('Price is: ' + price);
  console.log('Selection is: ' + selection);
  console.log($('#swatch_1'));

  $('#swatch_1').trigger("click");

  selection = $('#selectionConfirmText').text();
  price = $('#priceText').text();
  console.log('Price is: ' + price);
  console.log('Selection is: ' + selection);

}

Gibt mir:

console> Price is: $19.95
console> Selection is: blue
console> [Object Object]
console> TypeError: 'undefined' is not and object  //repeating until I manually exit

kein anderer code ausgeführt wird. Ich habe auch versucht, die Entlassung der Veranstaltung ohne jQuery wie diese:

var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("swatch_1"); 
cb.dispatchEvent(evt);

Und die Ausführung der Funktion direkt:

pPage.getColor(1);

Und ich bekomme die gleiche Ausgabe. Jede Hilfe ist willkommen.

InformationsquelleAutor Jeff Ryan | 2012-03-16
Schreibe einen Kommentar