0

関数「start」は、ユーザー名とパスワードを関数 logIn に渡します。問題は私が得ることです:

「参照エラー: 変数が見つかりません: ユーザー名」

問題はスニペットの最後で発生します。スニペットの 2 番目と 3 番目の「@echo」で、変数「username」が正しく表示されます。

質問: パラメータのユーザー名とパスワードをネストされた関数に渡すにはどうすればよいですか?

スニペット:

logIn = (username, password) ->
        @echo '--- LogIn ---'
        @echo '--- KNOWN HERE = ' + username + " ---"
        @then ->
            @echo '--- username KNOWN HERE = ' +  username + ' ---'
            @evaluate ->
                  @echo '--- @evaluate username NOT KNOWN HERE = ' + username + ' ---'

完全なコード:

    casper = require('casper').create({
        clientScripts: ["includes/jquery.min.js"],
        verbose: true,
        logLevel: 'debug'
})

    logIn = (username, password) ->
        @echo '--- LogIn ---'
        @echo '--- '+username+' // '+password+" ---"
        @then ->
            @echo '--- username in do = ' +  username + ' ---'
            @evaluate ->
                @echo '--- @evaluate username = ' + username + ' ---'
                $('#id_email').val(username)
                $('#id_password').val(password)
                $('.AuthForm').submit()

    start = -> 
        @start loginURL
        @echo '--- accounts.length = ' + accounts.length + ' ---'
        logIn.call @, accounts[currentAccount][0], accounts[currentAccount][1]
4

1 に答える 1

0

問題は、Casper#evaluateが、テストしているページで指定された関数を実行することです。そのページは、渡さない限り、テスト スクリプトの変数usernameと変数にアクセスできません。解決策は変更することです。password

@evaluate ->
  ...

@evaluate ((username, password) ->
  ...
), {username, password}
于 2012-04-11T12:05:42.230 に答える