2013-02-28 19 views
9

Na przykład mam krok, który często musi zostać wykonany, np. Logowanie użytkownika przed jakimś testem.Jak napisać własne moduły CasperJS?

Jak napisać wielokrotne fragmenty kodu dla CasperJS? Ich dokumentacja rozszerzenia CasperJS jest napisana tylko dla jednego pliku ...

Dzięki!

+1

Wierzę, że ten [problem] (https://github.com/n1k0/casperjs/issues/348) odnosi się dość dobrze do problemu, którego doświadczasz. – hexid

+0

casperjs nie jest częścią ekosystemu nodejs. – shabunc

Odpowiedz

8

Oto proste podejście. Jeśli nie znasz coffeescript, zamień go na JS na js2coffee.

testy/Casper/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() 

testy/Casper/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 

biegnie od linii polecenia:

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

Zrobiliśmy prawie to samo. Można to również zrobić bez eksportowania i dodawać metody bezpośrednio do instancji casper: 'casper.login'. – ValeriiVasin