2013-02-28 5 views
9

Например, у меня есть шаг, который часто нужно выполнить, например, пользовательский вход перед некоторым тестом.Как написать собственные модули CasperJS?

Как написать многоразовые куски кода для CasperJS? Их документация для расширения CasperJS написана только для одного файла ...

Спасибо!

+1

Я считаю, что этот вопрос (https://github.com/n1k0/casperjs/issues/348) довольно хорошо относится к проблеме, с которой вы столкнулись. – hexid

+0

casperjs не является частью экосистемы nodejs. – shabunc

ответ

8

Вот простой подход. Если вы не знакомы с coffeescript, переведите его в JS на js2coffee.

тесты/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() 

тесты/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 

работает из командной строки:

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

Мы сделали почти то же самое. Также можно сделать это без экспорта и добавить методы непосредственно к экземпляру casper: 'casper.login'. – ValeriiVasin

Смежные вопросы