Comment interdire à l’utilisateur de modifier les touches de focus / type de fenêtre du système d’exploitation pendant plusieurs secondes sous Linux

J’écris des tests automatisés pour un site Web. L’un des tests doit appuyer sur Ctrl + S et taper des lettres pour enregistrer une page Web incluant CSS / JS. Le test devrait obliger Firefox à se focaliser sur la fenêtre pendant ces quelques secondes pour pouvoir taper le nom du fichier et cliquer sur “Enregistrer” (actuellement XDoTool est utilisé pour appuyer sur les touches et cliquer sur la souris).

Parfois, je lance les tests sur mon ordinateur. Je ne veux pas saisir de temps en temps quelque chose ou modifier le focus de la fenêtre pendant l’enregistrement de la page. Je veux donc interdire de modifier le focus pendant quelques secondes lorsque ces clics de souris / appuis sur les touches sont exécutés.

Il n’est pas possible de le faire au niveau Webdriver (un outil que j’utilise pour contrôler le navigateur), donc je pense que je devrais le faire au niveau du système d’exploitation. Puis-je interdire à l’utilisateur de modifier le focus de la fenêtre ou de taper quelque chose pendant un certain temps? Cela peut ressembler à:

prohibit user from typing keys/change window focus save page allow user to type/change window focus 

Je suppose qu’une autre façon d’obtenir l’effet désiré serait d’exécuter Firefox et vos tests automatisés sur un serveur X nested (xf86-video-nested / Xephyr / Xnest).

 $ Xnest :1 $ export DISPLAY=:1.0 $ firefox http://something/to/test & $ your-test-script 

Étant donné que le serveur X nested a sa propre idée de la fenêtre ciblée, le déplacement du focus sur votre bureau ne devrait pas l’affecter.

(Si vous n’avez pas réellement besoin de voir le test progresser, vous pouvez utiliser un serveur X fictif (xf86-video-dummy / Xvfb / Xfake))