teclas teclado tecla retroceso pulsada presionar numerico ejemplos detectar controlar javascript javascript-events keypress

teclado - Cómo sintetizar teclas presionadas en javascript



teclado numerico virtual javascript (1)

Me acabo de enterar de que el siguiente código funciona al menos en Chrome. No entre en Firefox o IE http://jsfiddle.net/D2s5T/14/

function dispatch(target, eventType, char) { var evt = document.createEvent("TextEvent"); evt.initTextEvent (eventType, true, true, window, char, 0, "en-US"); target.focus(); target.dispatchEvent(evt); } dispatch(el, "textInput", "a");

Me gustaría escribir algunas pruebas para un código de filtrado de entrada en un cuadro de texto. Para la mayoría de las pruebas, solo puedo llamar a setValue y activar el evento de cambio, lo cual es fácil de hacer. Sin embargo, en este caso, como quiero probar que la entrada se filtra (o no), no puedo simplemente setValue() directamente.

Intenté despachar eventos de keydown, keyup, keypress, textinput. Puedo ver que se están llamando a los controladores, pero el texto no se muestra en el cuadro de texto. Tenga en cuenta que esto solo "funciona" en Firefox, entiendo que el código sería diferente para otros navegadores.

function dispatch(target, eventType, charCode) { var evt = document.createEvent("KeyboardEvent"); evt.initKeyEvent( eventType, true, true, window, false, false, false, false, charCode, 0 ); target.dispatchEvent(evt); } var id = document.getElementById(''id''); id.onkeydown = id.onkeyup = id.onkeypress = function() {console.log(arguments)} dispatch(id, ''keydown'', 65); dispatch(id, ''keyup'', 65); dispatch(id, ''keypress'', 65); dispatch(id, ''textinput'', 65); // I can see the handlers were called but it doesn''t display in the text box

Entiendo que esto tiene restricciones porque no queremos que las aplicaciones web solo pretendan estar actuando para el usuario. Sin embargo, esto es para probar mi propia aplicación y podría lanzar Firefox con un perfil específico e instalar complementos, o incluso escribir el mío si sé que ayudará.

Lo que estoy buscando es evitar el uso de Selenium, quiero mantener a Java fuera de mis pruebas JS porque no solo es lento, sino que tengo que volver a implementar muchas de las consultas DOM en Java.

Después de todo esto, la pregunta es, ¿alguien sabe cómo obtener ese código para realmente modificar la entrada? ¿Pellizcando configuraciones, instalando complementos?

Lista de preguntas que no responden a mi pregunta