我一直在使用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,而是手动(或在浏览器控制台中)执行此操作。
答案 0 :(得分:0)
问题是标准的phantomjs ssl问题,该网站使用https
加载jquery,订阅resource.error
帮助我找到了。
解决方案是使用casperjs
标志运行--ignore-ssl-errors=true
。