如何使用casperjs解析AJAX追加的元素?

时间:2016-01-12 12:21:45

标签: ajax coffeescript casperjs

我一直在使用casperjs处理一个小脚本,该脚本可以通过提交AJAX表单来解析附加了元素的简单页面。我怎么能这样做?

这似乎不起作用(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()

编辑:

使用casper提交表单遵循表单的操作,这意味着它会重定向到带有json响应的空白页面,而不是像{I}当我通过浏览器手动执行时一样在ajax:success中捕获它。该表单具有post方法,并且在javascript中过于严格以发送AJAX请求并在成功时向DOM附加元素。我尝试更改javascriptEnabled设置,但默认情况下为true

TL; DR使用casper提交表单并不会触发javascript,而是手动(或在浏览器控制台中)执行此操作。

1 个答案:

答案 0 :(得分:0)

哇,谢谢你@Artjom B.

问题是标准的phantomjs ssl问题,该网站使用https加载jquery,订阅resource.error帮助我找到了。

解决方案是使用casperjs标志运行--ignore-ssl-errors=true