Me gustaría simular la entrada del usuario en un sitio web usando JavaScript. Para hacerlo, simplemente hago algo como esto:
a = document.getElementsByClassName('field-name')[0]; a.value = 'new value';Sin embargo, en algunos sitios web que requieren que haga clic en "Enviar" después de la entrada, el botón permanece inactivo (perdón por no proporcionar el ejemplo, los únicos sitios con esa característica que conozco requieren iniciar sesión).
Recuerdo que una vez solucioné ese problema "Actualizando" el elemento después, pero no recuerdo exactamente cómo. He intentado agregar esto:
const change = new InputEvent('change'); a.value = 'new value'; const isNotCancelled = a.dispatchEvent(change);Pero no hay suerte aquí. ¿Alguna idea de cómo superar esto?
Actualización: solo como ejemplo: aquí hay un sitio web que hace lo que describí. Simplemente haga clic en el ícono de chat en la parte inferior derecha e ingrese cosas aleatorias para el correo electrónico, etc., luego verá el cuadro de entrada con el botón que describí.
El tipo de InputEvent debe ser beforeinput o input ( input , en su caso), no change ; también podría considerar disparar un Event con el type establecido en "change" (no hay un constructor ChangeEvent específico). Para el evento de input , asegúrese de configurar bubbles: true ya que el valor predeterminado para el constructor es false , pero los eventos de input son burbujas (los eventos de change no lo hacen, aunque algunas bibliotecas hacen que lo hagan). También es posible que deba blur el campo y puede focus al principio (para que el blur haga algo).
Por ejemplo:
const a = document.getElementsByClassName("field-name")[0]; // Or: const a = document.querySelector(".field-name"); a.focus(); a.value = "new value"; a.dispatchEvent(new InputEvent("input", {bubbles: true, cancelable: true})); a.dispatchEvent(new Event("change", {bubbles: false, cancelable: true})); a.blur(); Si ninguno de esos funciona, busque el botón y configure su disabled en false .