mirror of https://github.com/vitalif/phantomjs
Port the tests of keyup, keydown, and keypress events.
https://github.com/ariya/phantomjs/issues/124392.0
parent
ce66f290c3
commit
619225b1da
|
@ -0,0 +1,19 @@
|
||||||
|
var assert = require('../../assert');
|
||||||
|
var webpage = require('webpage');
|
||||||
|
|
||||||
|
var page = webpage.create();
|
||||||
|
|
||||||
|
page.evaluate(function() {
|
||||||
|
window.addEventListener('keydown', function(event) {
|
||||||
|
window.loggedEvent = window.loggedEvent || [];
|
||||||
|
window.loggedEvent.push(event);
|
||||||
|
}, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
page.sendEvent('keydown', page.event.key.A);
|
||||||
|
var loggedEvent = page.evaluate(function() {
|
||||||
|
return window.loggedEvent;
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(loggedEvent.length, 1);
|
||||||
|
assert.equal(loggedEvent[0].which, page.event.key.A);
|
|
@ -0,0 +1,64 @@
|
||||||
|
var assert = require('../../assert');
|
||||||
|
var webpage = require('webpage');
|
||||||
|
|
||||||
|
var page = webpage.create();
|
||||||
|
|
||||||
|
page.evaluate(function() {
|
||||||
|
window.addEventListener('keypress', function(event) {
|
||||||
|
window.loggedEvent = window.loggedEvent || [];
|
||||||
|
window.loggedEvent.push(event);
|
||||||
|
}, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
page.sendEvent('keypress', page.event.key.C);
|
||||||
|
var loggedEvent = page.evaluate(function() {
|
||||||
|
return window.loggedEvent;
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(loggedEvent.length, 1);
|
||||||
|
assert.equal(loggedEvent[0].which, page.event.key.C);
|
||||||
|
|
||||||
|
|
||||||
|
// Send keypress events to an input element and observe the effect.
|
||||||
|
|
||||||
|
page.content = '<input type="text">';
|
||||||
|
page.evaluate(function() {
|
||||||
|
document.querySelector('input').focus();
|
||||||
|
});
|
||||||
|
|
||||||
|
function getText() {
|
||||||
|
return page.evaluate(function() {
|
||||||
|
return document.querySelector('input').value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
page.sendEvent('keypress', page.event.key.A);
|
||||||
|
assert.equal(getText(), 'A');
|
||||||
|
page.sendEvent('keypress', page.event.key.B);
|
||||||
|
assert.equal(getText(), 'AB');
|
||||||
|
page.sendEvent('keypress', page.event.key.Backspace);
|
||||||
|
assert.equal(getText(), 'A');
|
||||||
|
page.sendEvent('keypress', page.event.key.Backspace);
|
||||||
|
assert.equal(getText(), '');
|
||||||
|
|
||||||
|
page.sendEvent('keypress', 'XYZ');
|
||||||
|
assert.equal(getText(), 'XYZ');
|
||||||
|
|
||||||
|
// Special character: A with umlaut
|
||||||
|
page.sendEvent('keypress', 'ä');
|
||||||
|
assert.equal(getText(), 'XYZä');
|
||||||
|
|
||||||
|
// 0x02000000 is the Shift modifier.
|
||||||
|
page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000);
|
||||||
|
page.sendEvent('keypress', page.event.key.Delete);
|
||||||
|
assert.equal(getText(), '');
|
||||||
|
|
||||||
|
// Cut and Paste
|
||||||
|
// 0x04000000 is the Control modifier.
|
||||||
|
page.sendEvent('keypress', 'ABCD');
|
||||||
|
assert.equal(getText(), 'ABCD');
|
||||||
|
page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000);
|
||||||
|
page.sendEvent('keypress', 'x', null, null, 0x04000000);
|
||||||
|
assert.equal(getText(), '');
|
||||||
|
page.sendEvent('keypress', 'v', null, null, 0x04000000);
|
||||||
|
assert.equal(getText(), 'ABCD');
|
|
@ -0,0 +1,19 @@
|
||||||
|
var assert = require('../../assert');
|
||||||
|
var webpage = require('webpage');
|
||||||
|
|
||||||
|
var page = webpage.create();
|
||||||
|
|
||||||
|
page.evaluate(function() {
|
||||||
|
window.addEventListener('keyup', function(event) {
|
||||||
|
window.loggedEvent = window.loggedEvent || [];
|
||||||
|
window.loggedEvent.push(event);
|
||||||
|
}, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
page.sendEvent('keyup', page.event.key.B);
|
||||||
|
var loggedEvent = page.evaluate(function() {
|
||||||
|
return window.loggedEvent;
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(loggedEvent.length, 1);
|
||||||
|
assert.equal(loggedEvent[0].which, page.event.key.B);
|
|
@ -173,157 +173,6 @@ describe("WebPage object", function() {
|
||||||
|
|
||||||
checkViewportSize(page, {height:300,width:400});
|
checkViewportSize(page, {height:300,width:400});
|
||||||
|
|
||||||
it("should handle keydown event", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.evaluate(function() {
|
|
||||||
window.addEventListener('keydown', function(event) {
|
|
||||||
window.loggedEvent = window.loggedEvent || {};
|
|
||||||
window.loggedEvent.keydown = event;
|
|
||||||
}, false);
|
|
||||||
});
|
|
||||||
page.sendEvent('keydown', page.event.key.A);
|
|
||||||
});
|
|
||||||
|
|
||||||
waits(50);
|
|
||||||
|
|
||||||
runs(function() {
|
|
||||||
var event = page.evaluate(function() {
|
|
||||||
return window.loggedEvent.keydown;
|
|
||||||
});
|
|
||||||
expect(event.which).toEqual(page.event.key.A);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle keyup event", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.evaluate(function() {
|
|
||||||
window.addEventListener('keyup', function(event) {
|
|
||||||
window.loggedEvent = window.loggedEvent || {};
|
|
||||||
window.loggedEvent.keyup = event;
|
|
||||||
}, false);
|
|
||||||
});
|
|
||||||
page.sendEvent('keyup', page.event.key.A);
|
|
||||||
});
|
|
||||||
|
|
||||||
waits(50);
|
|
||||||
|
|
||||||
runs(function() {
|
|
||||||
var event = page.evaluate(function() {
|
|
||||||
return window.loggedEvent.keyup;
|
|
||||||
});
|
|
||||||
expect(event.which).toEqual(page.event.key.A);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle keypress event", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.evaluate(function() {
|
|
||||||
window.addEventListener('keypress', function(event) {
|
|
||||||
window.loggedEvent = window.loggedEvent || {};
|
|
||||||
window.loggedEvent.keypress = event;
|
|
||||||
}, false);
|
|
||||||
});
|
|
||||||
page.sendEvent('keypress', page.event.key.A);
|
|
||||||
});
|
|
||||||
|
|
||||||
waits(50);
|
|
||||||
|
|
||||||
runs(function() {
|
|
||||||
var event = page.evaluate(function() {
|
|
||||||
return window.loggedEvent.keypress;
|
|
||||||
});
|
|
||||||
expect(event.which).toEqual(page.event.key.A);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle keypress event with inputs", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.content = '<input type="text">';
|
|
||||||
page.evaluate(function() {
|
|
||||||
document.querySelector('input').focus();
|
|
||||||
});
|
|
||||||
var getText = function() {
|
|
||||||
return page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
page.sendEvent('keypress', page.event.key.A);
|
|
||||||
expect(getText()).toEqual("A");
|
|
||||||
page.sendEvent('keypress', page.event.key.B);
|
|
||||||
expect(getText()).toEqual("AB");
|
|
||||||
page.sendEvent('keypress', page.event.key.Backspace);
|
|
||||||
expect(getText()).toEqual("A");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle keypress event of string with inputs", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.content = '<input type="text">';
|
|
||||||
page.evaluate(function() {
|
|
||||||
document.querySelector('input').focus();
|
|
||||||
});
|
|
||||||
page.sendEvent('keypress', "ABCD");
|
|
||||||
// 0x02000000 is the Shift modifier.
|
|
||||||
page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000);
|
|
||||||
page.sendEvent('keypress', page.event.key.Delete);
|
|
||||||
var text = page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
expect(text).toEqual("");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle key events with modifier keys", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.content = '<input type="text">';
|
|
||||||
page.evaluate(function() {
|
|
||||||
document.querySelector('input').focus();
|
|
||||||
});
|
|
||||||
page.sendEvent('keypress', "ABCD");
|
|
||||||
var text = page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
expect(text).toEqual("ABCD");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should send proper key codes for text", function () {
|
|
||||||
runs(function() {
|
|
||||||
page.content = '<input type="text">';
|
|
||||||
page.evaluate(function() {
|
|
||||||
document.querySelector('input').focus();
|
|
||||||
});
|
|
||||||
page.sendEvent('keypress', "ABCD");
|
|
||||||
// 0x02000000 is the Shift modifier.
|
|
||||||
page.sendEvent('keypress', page.event.key.Home, null, null, 0x02000000);
|
|
||||||
// 0x04000000 is the Control modifier.
|
|
||||||
page.sendEvent('keypress', 'x', null, null, 0x04000000);
|
|
||||||
var text = page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
expect(text).toEqual("");
|
|
||||||
page.sendEvent('keypress', 'v', null, null, 0x04000000);
|
|
||||||
text = page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
expect(text).toEqual("ABCD");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle keypress event of umlaut char with inputs", function() {
|
|
||||||
runs(function() {
|
|
||||||
page.content = '<input type="text">';
|
|
||||||
page.evaluate(function() {
|
|
||||||
document.querySelector('input').focus();
|
|
||||||
});
|
|
||||||
page.sendEvent('keypress', "ä");
|
|
||||||
var text = page.evaluate(function() {
|
|
||||||
return document.querySelector('input').value;
|
|
||||||
});
|
|
||||||
expect(text).toEqual("ä");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should handle mousedown event", function() {
|
it("should handle mousedown event", function() {
|
||||||
runs(function() {
|
runs(function() {
|
||||||
page.evaluate(function() {
|
page.evaluate(function() {
|
||||||
|
|
Loading…
Reference in New Issue