Я просто привыкаю к PhantomJs и пока это действительно круто.
Я пытаюсь просканировать сайт и получить данные о товарах на сайте.Каждая страница продукта загружается с видимым цветом по умолчанию.Когда вы щелкаете образец цвета, он заменяет новый цвет, запуская функцию.Каждый кликабельный элемент образца цвета выглядит следующим образом:
<input type="image" id="swatch_0" onclick="pPage.getColor(0);" src="http://www.site.com/img50067.jpg">
getColor обновляет эскиз и цену для этого цвета.Идентификатор увеличивается для каждого доступного цвета (swatch_0, swatch_1 и т. Д.), А также аргумент, передаваемый в getColor.Я хочу перебрать каждый цвет с помощью PhantomJs и получить соответствующие данные для каждого.
Я загрузил страницу, загрузил jQuery и могу получить данные для изначально загруженного цвета, но, похоже, ничто не позволяет мне выполнять события щелчка.
вот что я пытаюсь:
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);
}
Это дает мне:
console> Price is: $19.95
console> Selection is: blue
console> [Object Object]
console> TypeError: 'undefined' is not and object // repeating until I manually exit
другой код не запускается.Я также попытался запустить событие без jQuery следующим образом:
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);
И запустить функцию напрямую:
pPage.getColor(1);
И я получаю тот же вывод.Любая помощь приветствуется.