Я недавно начал изучать CasperJS, и я пытаюсь войти на YouTube. Вот мой текущий код:Невозможно получить доступ к переменным из функции thenEvaluate() в CasperJS
// XPathSignInButton is predefined
var Username = 'user123';
var Password = 'pass123';
casper.waitForSelector(xPathSignInButton, function() {
this.thenEvaluate(function() {
$('#Email').val(Username);
$('#Passwd').val(Password);
});
});
Код выше не манипулирует полей ввода (не писать в них), однако, если я заменю thenEvaluate()
с this.fillSelectors()
переменные доступны, как правило, и все выполняет отлично:
// XPathSignInButton is predefined
// signInFormSelector is predefined
casper.waitForSelector(xPathSignInButton, function() {
this.fillSelectors(signInFormSelector, {
'input[name="Email"]': Username,
'input[name="Passwd"]': Password
});
});
Сначала я подумал, что возникла проблема с тем, как я назвал jQuery, но когда я заменил переменные фактическими строками типа: $('#Email').val('user123');
и $('#Email').val('pass123');
- он работал как шарм.
Мой вопрос: как получить доступ к переменным из функции thenEvaluate()
. Возможно ли это?
В стороне: вы можете использовать 'evaluation()' здесь вместо 'thenEvaluate()'. Кроме того, предпочитайте 'fill()' функции над 'оценкой()' (это избавляет вас от необходимости выполнять дополнительную работу, показанную в ответе Artjom, для начала). –