PhantomJs cliquer sur les liens ou l'exécution de la page sur les fonctions

Je suis juste à s'habituer à PhantomJs et jusqu'à présent, c'est vraiment cool.

Je suis en train d'analyser un site et d'obtenir des données sur les produits sur le site. Chaque produit chargement de la page avec la couleur par défaut du produit visible. Lorsque vous cliquez sur une nuance de couleur d'intervertir la nouvelle couleur par l'exécution d'une fonction. Chaque cliquable nuance de couleur de l'élément ressemble à ceci:

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

getColor les mises à jour de la vignette et de prix pour cette couleur. L'id s'incrémente pour chaque couleur disponible (swatch_0, swatch_1, etc) et l'argument passé à getColor incréments. Je veux pour itérer sur chaque couleur avec PhantomJs et tirez les données pertinentes pour chaque.

J'ai chargé la page, chargé de jQuery, et peut extraire les données pour les initally chargés de la couleur, mais rien ne semble me permettre de l'exécuter cliquez sur événements.

ici est ce que j'essaie:

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);

}

Cela me donne:

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

aucun autre code s'exécute. J'ai aussi essayé le tir de l'événement sans jQuery comme ceci:

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);

Et l'exécution de la fonction directement:

pPage.getColor(1);

Et j'obtiens le même résultat. Toute aide est appréciée.

OriginalL'auteur Jeff Ryan | 2012-03-16