函数'start'将用户名和密码传递给函数logIn。问题是我得到:
'ReferenceError:找不到变量:username'
问题在代码片段结尾处出现问题。在代码段的第二个和第三个“@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]
答案 0 :(得分:0)
您的问题是Casper#evaluate在您正在测试的页面中运行给定的函数 。该页面无法访问测试脚本中的username
和password
变量,除非您将其传入。解决方案是更改
@evaluate ->
...
到
@evaluate ((username, password) ->
...
), {username, password}