如何使用casperjs模拟键盘操作/事件?我在按下shift + alt + enter
,ctrl + }
和ctrl + shift + >
之类的键盘操作时遇到困难,还有更多像这样的事情。
有人可以帮助我做这些行动
尝试使用以下
this.sendKeys('div.edit-code > textarea:nth-child(1)', 'enter', {modifiers: 'shift + alt'});
我需要使用this site的键盘快捷键执行单元格,方案如下:
'+'
符号"shift+alt+enter"
单元格答案 0 :(得分:1)
我写了一个小测试用例:
keyboard.html (抓住键盘事件并将其写入div):
<script>
document.onkeypress = function (e) {
var keys = [e.ctrlKey ? "CTRL" : "", e.altKey ? "ALT" : "", e.shiftKey ? "SHIFT" : "", String.fromCharCode(e.keyCode)].filter(function (x) {
return x != "";
})
document.querySelector('#text').textContent = keys.join(" + ");
};
</script>
<div id="text">
</div>
Casper脚本:
var casper = require('casper').create();
casper.start('http://localhost:63344/CasperSheet/keyboard.html');
function testKey(key, modifiers) {
casper.then(function () {
casper.sendKeys("#text", key, {modifiers: modifiers});
}).then(function () {
casper.echo(casper.evaluate(function () {
return document.querySelector("#text").textContent
}))
})
}
testKey('a');
testKey('}', 'ctrl')
testKey('>', 'ctrl+alt')
testKey('\n', 'shift+alt')
casper.run();
<强>输出强>:
a
CTRL + }
CTRL + ALT + >
ALT + SHIFT +
//a new line here...
来看看你的代码,我的建议:
'enter'
应为'\n'
。如果您使用'enter'
,则会发送'e'
,'n'
,'t'
,'e'
,'r'
五个主板事件...... {modifiers: 'shift + alt'}
应为{modifiers: 'shift+alt'}
。因为修饰符组合的实现不会修剪空间...您可以向CasperJS发布拉取请求来修复... 好的,让我们讨论如何在该网络应用中运行您的代码......我发现我们可以通过点击play
按钮来运行代码,因此无需按alt + shift + enter
运行代码这很难实现......
该脚本适合我:
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
viewportSize: {
width: 1600,
height: 900
}
});
var cookie = "user=Sayalic0; token=<some_token>";
var domain = "rcloud.social";
cookie.split(";").forEach(function(pair){
pair = pair.split("=");
phantom.addCookie({
'name': pair[0],
'value': pair[1],
'domain': domain
});
});
casper.start('https://rcloud.social/edit.html?notebook=<note_book_id>')
casper.then(function () {
casper.wait(30000);//wait for page load
}).then(function () {
casper.capture('1.png')
}).then(function () {
casper.click("#run-notebook > i")// click run
}).then(function () {
casper.wait(10000)//wait code running ends
}).then(function () {
casper.capture('2.png');
})
casper.run()
<强>截图强>: