2016-01-23 5 views
1

Тип метода в nightmare.js присваивает текст входному значению свойства элемента управления. Из-за этого приведения в действие, событие нажатия клавиши не запускается на странице, которую вы пытаетесь очистить. Любой способ отправить событие keydown после «type»?Отправка keydown, нажатие на тип в nightmare.js

Редактировать 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); 
} 

Edit 2-

Использование Юникода эквивалент ключи как метод типа 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); 
} 

ответ

1

Вы можете оценить страницу и отправить KeyDown событие, используя простые JS или JQuery, JQuery является простым способом, но больше всего будет введен.

Использование JQuery:

.inject('js', '/jquery-2.1.4.min.js') 
.evaluate(function() { 
    var e = $.Event("keypress", { which: 13 }); 
    $('#yourInput').trigger(e); 
}); 

EDIT: Похоже, есть поддержка в кошмар для стрельбы ключевых событий. Взгляните на https://github.com/segmentio/nightmare/issues/244 и https://github.com/segmentio/nightmare/issues/147.

EDIT2: Нет, должно быть .type('document', '\u000d'). Получил неправильный символ Юникода.

+1

Спасибо за ваш ответ. Я попробовал оба варианта, которые вы предложили, ни для меня не работает, проверьте пример, который я добавил выше, который реализует ваше предложение. –

+0

Я обновил ответ, я использовал неправильный символ Юникода. – Evers

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

  • Нет связанных вопросов^_^