2013-02-28 107 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