1
casper.test.begin "Can open the homepage", (test) ->
  casper.options.viewportSize = {width: 1024, height: 768}
  casper.start("http://localhost:4000/", ->
    @wait(1000, ->
      test.assertHttpStatus 200
      test.assertTitle("XYZ Corp")
      test.assertExists('DIV.links')
      test.assertElementCount('DIV.links', 1)
      test.assertExists('IMG#companyLogo')
      @capture('./test/screencaps/homepage.png')
    )
  ).run ->
    test.done()

好的,所以测试通过就好了。我想改进的是@wait 调用,@waitFor 似乎更聪明:

@waitFor(
  ->
    document.querySelectorAll('DIV.links').length > 0
  ->
    test.assertHttpStatus 200
    test.assertTitle("XYZ Corp")

但是,这总是超时。该document对象存在,它可以运行该querySelectorAll函数,但我永远不会得到任何结果。该DIV.links对象必须出现在页面上(我可以在屏幕截图中看到它),因为在第一种情况下测试通过了。但在第二种情况下,条件始终为假。waitFor文档在这里

额外的问题:我可以调试 casper 测试吗?

4

1 回答 1

2

4天,没有答案,我自己想通了:

  .then( ->
    @open("theUrl")    
    @waitUntilVisible("DIV.alpha",
    ->
      test.assertExists("DIV.alpha") # doesnt hurt to check
      test.assertExists("DIV#beta")
      @capture('./test/screencaps/waitUntilVisible.png')
    ->
      test.fail('failed to find div.alpha')
    3000
    )
  )
于 2013-11-12T21:25:52.247 回答