为什么CasperJS表单提交不重定向到下一页?

时间:2012-08-29 15:42:10

标签: coffeescript casperjs

这是我的第一次casper测试,所以我仍然在努力学习基础知识。我想在登录表单上填写用户名和密码,然后提交。然后确认是否在下一个页面上显示“注销”链接(确认用户已登录)。

但据我所知,当然后调用时,网址仍然相同。看起来没有帖子或重定向到下一页正在发生。我做错了什么?

casper.start "http://test.local.mycompany.local/", ->
    @echo 'at ' + @getCurrentUrl()
    @fill 'form', { UserAlias : 'joe', Password : 'password' }, true

casper.then ->
    @echo 'at ' + @getCurrentUrl()
    @test.assertExists '#log-off-link', 'log-off link exists'

casper.run ->
    @test.done()

所以@getCurrentUrl的回显都返回相同的URL,这是错误的。

3 个答案:

答案 0 :(得分:6)

您可以尝试使用chrome extension ressurectio在浏览器中为casperjs生成自动化测试。它使用起来非常简单有用。可能在几行( - 生成的代码的一部分)你应该做一些修复,但无论如何它是非常有用和方便的。

答案 1 :(得分:2)

我遇到了同样的问题。有一天,我的卡斯帕测试停止了工作。更确切地说,casperjs在重定向后停止了。问题实际上是我的服务器返回了一个无效的HTTP set-cookie标头(日期无效)。这是由于到期日期的配置问题。无论如何,似乎如果某些标头值中存在不正确的值,则会使casperjs忽略其他标头值,例如" location"用于重定向的http标头。

一旦我解决了Cookie中的过期日期问题,HTTP set-cookie标头就可以了,并且casperjs开始再次关注重定向。

希望这有帮助!

答案 2 :(得分:1)

casper可能无法按名称查找字段。你可以试试

casper.start "http://test.local.mycompany.local/", ->
    @echo 'at ' + @getCurrentUrl()
    @fillSelectors 'form', { 'input[name=UserAlias]' : 'joe', 'input[name=Password]' : 'password' }, true

它应该与您的代码相同,但有时它不会。