Automatisation de l'interface graphique avec le pilote d'application Python x Windows

[Introduction]

À l'origine, il semble que le plan était d'utiliser WinActor sur le terrain, J'avais un contrat pendant un certain temps, mais je n'ai pas pu récupérer l'investissement, j'ai donc réduit tout le budget de RPA, y compris WinActor. En conséquence, nous avons décidé de procéder à la RPA avec un coût nécessaire de 0 yen. Cette fois, j'écrirai sur la lutte pour réaliser le fonctionnement automatique de l'interface graphique.

[Introduction]

Il existe différents types d'automatisation des opérations GUI. La première chose à laquelle je suis arrivé était l'authentification d'image à l'aide de pyautogui + opération clavier / souris. Cela fera certainement fonctionner le clavier et la souris, mais Je ne sais pas s'ils font vraiment fonctionner l'écran.

Si vous y ajoutez une authentification d'image, la précision augmentera considérablement. Cependant, cela a aussi ses inconvénients. ・ Lent car l'opération consiste à rechercher l'image spécifiée sur l'affichage à l'écran. ・ Il ne répond pas si l'image d'arrière-plan du bureau est modifiée. ・ L'opération change avec une image à rechercher

J'ai cherché quelque chose de plus stable et je l'ai trouvé. C'est "UI Automation" Rejeté pour les raisons suivantes ・ Je n'aime pas coder personnellement ・ La quantité d'informations est petite (j'ai personnellement senti que ...)

J'y ai recueilli diverses informations et j'y suis arrivé. "Pilote d'application Windows" (WAD car il est long) Voici les raisons de l'adoption -Le codage ressemble au sélénium └ N'importe qui peut l'utiliser s'il se souvient du sélénium. Et vice versa ・ Les informations sont relativement nouvelles et vous pouvez facilement les trouver si vous les recherchez.

* Le mécanisme de base de UI Automation et WAD

Similaire à VB.net, JQuery, etc. C'est un type qui complète la cible et opère en spécifiant l'ID de l'action d'opération et d'autres attributs.

[Sujet principal]

Fondamentalement, cela fonctionnera si vous faites le contenu écrit dans l'URL suivante. https://arakan-pgm-ai.hatenablog.com/entry/2019/08/19/000000

Le contenu que j'ai conçu est le suivant

① Environnement d'exploitation

Tout d'abord, l'environnement d'exécution doit disposer des privilèges "mode développeur". Par conséquent, l'option de choisir un PC personnel comme environnement d'exécution a été rapidement éliminée.

J'ai choisi d'utiliser Windows 10 dans un environnement virtuel (Si un environnement virtuel ne peut pas être préparé, un PC qui a été retiré en remplacement d'un PC est également acceptable)

Un autre objectif est d'empêcher les humains d'entrer en concurrence avec des ressources telles que des presse-papiers, des souris et des claviers. Cela facilite également la maintenance.

S'il y a 10 travailleurs, il peut être nécessaire de l'installer sur 10 PC. Si plusieurs travailleurs se rassemblent, certaines personnes peuvent ne pas suivre les précautions. Même s'il n'y a qu'un seul travailleur, il y a diverses choses comme le changement de responsable. Nous prenons la méthode de création et d'exploitation d'un environnement que les travailleurs ne peuvent pas toucher.

Comment exécuter un programme automatisé? C'est le plus simple à utiliser, comme un planificateur de tâches. Il y a différentes mesures ici, alors je reviendrai plus tard.

② Comment éviter de fermer accidentellement l'écran WAD

À mesure que l'automatisation utilisant WAD se généralisera, d'autres programmeurs commenceront à utiliser cet environnement. Ensuite, même ceux qui ne comprennent pas bien commenceront à l'utiliser en imitant l'apparence. Quand cela s'est produit, j'ai fermé l'écran noir ... C'est quelque chose que tu fais   Dans ce cas, même si vous définissez le démarrage avec le planificateur de tâches, etc. Il ne bouge pas car WAD est arrêté.

La contre-mesure la plus simple serait de le démarrer de manière à ce que l'écran noir ne soit pas affiché. Le code suivant doit être placé dans Shell: startup

wad.vbs


dim ws
Set ws = CreateObject("Wscript.Shell") 
ws.Run """C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe""", 0

③ Lorsque l'application à utiliser est sur l'écran de la télécommande

Puisqu'il ne peut pas être utilisé, installons l'application à exploiter localement. Comme vous pouvez le voir dans l'outil de recherche GUI, lorsque vous essayez de fonctionner via VNC ou Xen Vous pouvez uniquement obtenir des informations sur la partie campus de l'écran VNC ou Xen.

④ Amélioration de la vitesse d'entrée

Utilisez pyperclip pour saisir la chaîne de caractères à saisir dans le presse-papiers Collons en envoyant Ctrl + V dans la zone de texte. Vous pouvez utiliser le mécanisme d'entrée standard, Il se comporte comme toucher le clavier, donc lors de la saisie de longues phrases La vitesse de fonctionnement sera plus lente.

⑤ Lorsque l'application à exploiter a été démarrée et démarrée par lots

C'est une prémisse Le code ci-dessous fonctionne comme le lancement d'une calculatrice et le complément de l'application de la calculatrice.

desired_caps["app"] = "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"

pour cette raison Même si vous spécifiez le chemin d'accès au lot dans desire_caps ["app"], l'application ne peut pas être complétée.

subprocess.Popen(['start',Raccourci du lot PATH], shell=True)
#Certes, l'explorateur aurait dû être bon aussi bien que commencer.

-Modifier la partie suivante du code Python

desired_caps["app"] = "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"
 ↓
desired_caps["app"] = "Root"

Cela complète le bureau lui-même.

Si les deux conditions ci-dessus sont remplies L'application portant le titre "●●●" est-elle en cours d'exécution sur le bureau? Vous pourrez le confirmer. Alors ● Attendez une seconde, et si vous ne le trouvez pas, vous pouvez faire une erreur / démarrer, et vous pouvez continuer à travailler.

⑥ Comment utiliser la boîte de dialogue

Vous pouvez également opérer après avoir vérifié la valeur d'attribut de la même manière qu'une zone de texte, etc. Certains sont assez compliqués.

En guise de contre-mesure, Après avoir vérifié le titre du vent Ceci peut être facilement réalisé en le combinant avec l'utilisation du clavier de pyautogui.

Je pense que la plupart des choses peuvent être faites en faisant autant. La prochaine fois, résumons le domaine du fonctionnement automatique du WEB.

Recommended Posts

Automatisation de l'interface graphique avec le pilote d'application Python x Windows
Python à partir de Windows 7
Récapitulatif des outils d'exploitation de l'interface graphique Windows avec Python
PIL en Python sur Windows8 (pour Google App Engine)
Python avec VSCode (Windows 10)
compilateur x86 réalisé avec python
Exécutez python avec PyCharm (Windows)
[GUI en Python] PyQt5-Layout management-
[GUI avec Python] PyQt5-Préparation-
Synchronisation de l'heure (Windows) avec Python
[GUI avec Python] PyQt5 -Paint-
Créer Python3 pour Windows 10 sur ARM avec Visual Studio 2019 (x86) sur Windows 10 sur ARM
Détection de visage avec YOLO Face (Windows10, Python3.6)
Installez Python 2.7.9 et Python 3.4.x avec pip.
[Automation] Extraire les rendez-vous Outlook avec Python
[Automatisé avec python! ] Partie 1: fichier de configuration
[GUI avec Python] PyQt5 -Widget II-
Faisons une interface graphique avec python.
[Automation] Envoyer des e-mails Outlook avec Python
[GUI avec Python] PyQt5-La première étape-
Application GUI facile avec Tkinter Text
[GUI en Python] PyQt5-Glisser-déposer-
Construire mlpy avec python3.3 (64 bits) (Windows 64 bits)
Utiliser la synthèse vocale Windows 10 avec Python
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
[GUI avec Python] PyQt5-Widget personnalisé-
Premiers pas avec Python 3.8 sous Windows
[Python] Création de plusieurs fenêtres avec Tkinter
Exécutez le servo avec Python sur ESP32 (Windows)
[Automation] Manipulez la souris et le clavier avec Python
Uncle SES modernise l'application VBA avec Python
Créer une application GUI simple en Python
Créer une application graphique avec Tkinter de Python
Création d'un environnement Python 3.6 avec Windows + PowerShell
Écran partagé avec l'application python exe
Démonisez une application Web Python avec Supervisor
Développer des applications Windows avec Python 3 + Tkinter (Préparation)
Utiliser sans installer python 2.x sous Windows
Application Web facile avec Python + Flask + Heroku
[Automation] Lire des documents Word avec Python
Créez une application de mots anglais avec python
Rejoignez un juge en ligne avec Python 3.x
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Construction d'interface graphique heureuse avec électron et python
Créez une application de bureau avec Python avec Electron
Exécutez des applications Windows (héritées) avec le pilote d'application Windows
Installation de PIL avec Python 3.x sur macOS
Traitement d'image léger avec Python x OpenCV
[Automation] Lire le courrier (fichier msg) avec Python
[Blender x Python] Commençons avec Blender Python !!
Application Othello (application iOS) réalisée avec Python (Kivy)
Construction d'un environnement d'analyse de données Python facile avec Windows10 Pro x VS Code x Docker
Je ne peux pas créer de projet avec Python3.5 (Windows) + django1.7.1.
J'ai créé une application graphique avec Python + PyQt5
Gagnez l'application Web Python + Flask avec Jenkins
Outil de rognage d'image GUI réalisé avec Python + Tkinter
[Automation] Extraire le tableau en PDF avec Python
Environnement virtuel / package Python (Windows10) avec VSCode
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Vous pouvez facilement créer une interface graphique même avec Python