1
nightmare.js中的類型方法將文本分配給輸入控件的value屬性。由於這個實現keydown,keypress事件不會觸發您正試圖抓取的頁面上。任何方式發送'類型'後的keydown事件?在nightmare.js中發送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等效的鍵作爲類型方法的參數以某種方式調用附加的事件,不完全確定這種黑客的工作方式,但它的工作原理!
這裏是例 - 工作
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);
}
感謝您的回覆。我嘗試了你提出的兩個選項,既不適用於我,也不檢查我上面添加的實現你的建議的示例。 –
我已經更新了答案,我使用了錯誤的unicode字符。 – Evers