Метод type в кошмаре.js присваивает текст свойству value элемента управления вводом. Из-за этой реализации keydown событие нажатия клавиши не запускается на странице, которую вы пытаетесь очистить. Любой способ отправить событие нажатия клавиши после «типа»?
Изменить 1-
Вот пример отправки события с помощью jQuery, который тоже не работает:
var Nightmare = require('nightmare');
var vo = require('vo');
var nightmare = Nightmare();
vo(run)(function(err, result) {
if (err) throw err;
});
function *run() {
var title = yield nightmare
.goto('http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes')
.type('#txtChar','\n')
.evaluate(function() {
var e = $.Event( "keypress", { which: 13 } );
$('#txtChar').trigger(e);
return "Key you pressed is : " + $('#txtChar').val();
});
yield nightmare.pdf('type.pdf');
setTimeout(function () {
console.log( ' ' + title);
nightmare.end();
process.exit();
},2000);
}
Изменить 2-
Использование Unicode-эквивалента ключей в качестве параметра для метода type каким-то образом вызывает прикрепленные события, не совсем уверен, как работает этот хак, но он работает!
Вот рабочий пример-
var Nightmare = require('nightmare');
var vo = require('vo');
var nightmare = Nightmare();
vo(run)(function(err, result) {
if (err) throw err;
});
function *run() {
var title = yield nightmare
.goto('http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes')
.type('#txtChar','1') //so we have focus on textbox
.type('document', '\u000d')
.evaluate(function() {
return "Key you pressed is : " + $('#txtChar').val();
});
yield nightmare.pdf('type.pdf');
setTimeout(function () {
console.log( ' ' + title);
nightmare.end();
process.exit();
},2000);
}