2013-02-28 101 views
9

例如,我有一个经常需要执行的步骤,例如用户在进行一些测试之前登录。如何编写自己的CasperJS模块?

如何为CasperJS编写可重用的代码块?他们的扩展CasperJS的文档只写入一个文件...

谢谢!

+1

我相信这个[问题](https://github.com/n1k0/casperjs/issues/348)与您遇到的问题很好地相关。 – hexid 2013-02-28 17:15:58

+0

casperjs不是nodejs生态系统的一部分。 – shabunc 2015-12-08 22:28:03

回答

8

这是一个简单的方法。如果不熟悉coffeescript,请将其转换为js2coffee上的JS。

测试/卡斯帕/ test.coolPage.coffee

loginModule = require("./test.login") 
loginModule.login("test","testPW") 

casper.test.comment "Testing cool stuff, should be logged in by now" 

casper.thenOpen casper.cli.get("url") + "/myCoolPage", -> 
    @test.assertExists '#myCoolDiv' 

casper.then() -> 
    @test.assertExists '.somethingElse' 

casper.run -> 
    @test.done() 

测试/卡斯帕/ test.login.coffee

exports.login = (username, password) -> 
    casper.test.comment "Loggin in with username \"#{username}\", password \"#{password}\"" 

    casper.start casper.cli.get("url") + "/login", -> 
    @test.assertExists "input[name=username]", "input[name=password]" 

    casper.then() -> 
    @sendKeys "input[name=username]", username 
    @sendKeys "input[name=password]", password 
    @click "input[type=submit]" 

    casper.then() -> 
    #assert you got logged in 

从命令行运行:

cd tests/casper  
casperjs test test.coolPage.coffee --url=http..my-test-url 
+1

我们做得几乎一样。也可以在没有导出的情况下执行该操作,并直接向casper实例添加方法:'casper.login'。 – ValeriiVasin 2013-05-27 08:35:15