J'écris un script d'utilisateur et je n'arrive pas à remplir un formulaire fait par reactjs. Mon code:Remplir le formulaire reacjs par programmation
document.querySelector("#id-username").value = "[email protected]";
// Attempt to notify framework using input event
document.querySelector("#id-username").dispatchEvent(new Event("input", {data:"[email protected]"}));
// Attempt to notify framework using change event
document.querySelector("#id-username").dispatchEvent(new Event("change"));
// This doesn't help either
document.querySelector("#id-username").dispatchEvent(new Event("blur"));
// Submit the form using button (it's AJAX form)
document.querySelector("fieldset div.wrap button").click();
je suis entré dans ce code dans la console d'outils de Developper après le chargement de la page. Cependant, la forme ne tient pas compte de mon entrée programatical:
Le formulaire est disponible here. Le but de mon travail est d'automatiser la connexion au site Web donné. J'ai fourni l'URL spécifique, mais j'attends une solution générique à ce problème (par exemple en utilisant une API de reactjs) qui peut être appliquée à n'importe quelle forme de réaction. D'autres utilisateurs peuvent avoir besoin de cette solution pour écrire des tests automatisés pour leurs sites.
Il ne devrait pas être quelque chose de spécial à ce sujet étant une forme React. Vous pouvez juste attendre que document.load ait été déclenché avant d'essayer d'automatiser. Par exemple, j'ai exécuté votre première ligne à partir de la console et il a rempli la boîte de nom d'utilisateur très bien. –
Utilisez simplement waitForKeyElements ou MutationObserver. –
@KeithRousseau J'ai testé cela dans la console de Firefox (longtemps après le chargement). Les résultats que vous voyez ne sont pas d'usercript, je n'ai même pas commencé à l'écrire. Je viens de tester ces commandes après le chargement de la page et il a déjà échoué. –