Я работал над небольшим сценарием, используя casperjs
, который мог бы анализировать простую страницу с элементами, прилагаемыми к форме AJAX. Как я мог это сделать?Как анализировать элементы, добавленные AJAX, используя casperjs?
Это не похоже на работу (CoffeeScript):
getLinks = ->
links = document.querySelectorAll('a')
Array::map.call links, (e) ->
e.getAttribute 'href'
casper = require('casper').create()
casper.start 'somepage', ->
@fill '#some-form', {text: 'hello'}, true
# appends an element on success
casper.then ->
links = @evaluate(getLinks)
@echo links[0]
casper.run ->
@exit()
EDIT:
Отправка формы с использованием Casper следует действие формы, а это означает, что он перенаправляет на пустую страницу с json вместо того, чтобы ловить его в ajax:success
, как это происходит, когда я делаю это вручную через браузер. Форма имеет метод post
и перезаписывается в javascript для отправки запроса AJAX и добавления элемента в DOM при успешном завершении. Я попытался изменить настройку javascriptEnabled
, но по умолчанию это true
.
TL; DR При отправке формы с использованием casper не запускается javascript, а выполняется вручную (или в консоли браузера).
Какую версию PhantomJS вы используете? Пожалуйста, зарегистрируйтесь на события 'resource.error',' page.error', 'remote.message' и' casper.page.onResourceTimeout' ([Пример] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file -2_caspererrors-JS)). Возможно, есть ошибки. –
. Лучше, зарегистрировались ли вы в событиях ошибки, чтобы увидеть, может ли, например, некоторая JS не может быть выполнена? Кроме того, важно знать, какую версию PhantomJS вы используете. –
Большое спасибо. Просто начал использовать это сегодня, слишком поспешил подумать о правильной отладке. –