[PYTHON] En utilisant PyAutoGui, j'ai essayé d'automatiser le test d'interface utilisateur du programme VB6 fonctionnant sur Windows Server 2003 R2 (feuille de triche de commande d'entrée).

Opérations clavier et souris avec winautogui

Dans l'automatisation des tests d'interface utilisateur que je faisais de mon mieux avec UWSC, il y avait un élément qui n'acceptait en aucun cas l'entrée de clé (Ore Grape City), donc la commande que j'utiliserais lors de l'écriture d'un script d'automatisation avec pyAutoGUI est [documentation de PyAuto Gui](https :: Je l'ai extrait de //pyautogui.readthedocs.io/en/latest/index.html).

Au fait, l'environnement dans lequel je fais de mon mieux est le suivant OS:Windows Server 2003 R2 Langage de développement d'applications: Visual Basic 6 Version Python utilisée pour l'automatisation cette fois: 2.7.18

Le site auquel j'ai fait référence en écrivant cet article

Merci aux grands ancêtres! …… Consultez la page Grands prédécesseurs pour savoir comment installer des modules avec pip

Édition souris

Mouvement de la souris

pyautogui.moveTo(100, 200)  #Coordonner(100,200)Le curseur de la souris se déplace vers
pyautogui.moveTo(None,500)  #Coordonner(100,500)Le curseur de la souris se déplace vers
pyautogui.moveTo(600,None)  #Coordonner(600,500)Le curseur de la souris se déplace vers

Clic de souris

pyautogui.click()              #Événement de clic déclenché là où se trouve le curseur de la souris
pyautogui.click(x=100, y=200)  #Coordonnées du curseur de la souris(100,200)Accédez à et cliquez sur feu d'événement
pyautogui.click(button='right')#Faites un clic droit avec ceci

Application de clic de souris

pyautogui.click(clicks=2)                 #Double-cliquez avec le bouton de clic gauche
pyautogui.click(clicks=2, interval=0.25)  #Clic gauche Clic bouton → 0.Attendez 25 secondes → clic gauche cliquez sur le bouton
pyautogui.click(button='right', clicks=3, interval=0.25) #Bouton droit de la souris triple clic, intervalle 0.25 secondes

La saisie au clavier

Envoyer la chaîne

pyautogui.write('Bonjour le monde!')  # ただ単に「Bonjour le monde!」が出力される
pyautogui.write('hello world!', interval=0.25) #0 caractère par caractère.Toutes les 25 secondes"hello world!"Est sortie

Appuyez sur la touche (appuyez et relâchez)

pyautogui.press('enter')  #La touche Entrée est enfoncée
pyautogui.press('f1')     #Fonction 1[F1]La touche est enfoncée
pyautogui.press('left')   #Flèche gauche[←]La touche est enfoncée

Touche enfoncée (maintenez la touche enfoncée)

pyautogui.keyDown('shift') # [Shift]Maintenez la touche enfoncée. Tel qu'il est jusqu'à keyUp
pyautogui.press('left')    #Parce que c'est une presse[←]Touche enfoncée et relâchée
pyautogui.press('left')    #Parce que c'est une presse[←]Touche enfoncée et relâchée
pyautogui.press('left')    #Parce que c'est une presse[←]Touche enfoncée et relâchée
pyautogui.keyUp('shift')   # [Shift]La clé monte(Relâchez la clé)

Fonctionnement des touches un peu avancé

Donnez à l'élément du tableau un code clé et utilisez-le comme la fonction write ()

pyautogui.press(['left', 'left', 'left'])        #Version réalisée avec des éléments de tableau
pyautogui.press('left',presses=3)                #Si vous appuyez sur le même bouton à plusieurs reprises, vous pouvez spécifier le nombre de fois avec l'option de pressions
pyautogui.press('left',presses=3, interval=0.25) # write()Vous pouvez ajuster l'intervalle d'entrée avec l'option d'intervalle ainsi que

Fonction de pression simultanée sur les touches (touche spéciale)

pyautogui.hotkey('ctrl', 'shift', 'esc') #[Ctrl]+[Shift]+[Esc]Lancer le gestionnaire de tâches avec

Bien sûr, vous pouvez l'écrire comme ça ...

pyautogui.keyDown('ctrl')
pyautogui.keyDonw('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyup('ctrl')

Il est plus facile d'utiliser la fonction de raccourci clavier.

Liste des clés virtuelles

Voici une liste de clés virtuelles qui peuvent être utilisées avec pyAutoGui.

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']

C'est un endroit qui semble être utilisé de manière inattendue

['kana', 'kanji','ctrlright','decimal','numlock']

Ou quelque chose?

Problèmes avec les chaînes de caractères japonais

Ceci est une copie. Oui. Veuillez chanter. Le japonais est une copie. J'ai fait de mon mieux. Moi aussi. Unicode est-il faux? Ou faut-il que ce soit Shift-JIS? Quand La réponse a été donnée par l'ancêtre.

import pyperclip as clipboard
clipboard.copy("Chaîne de caractères japonais")
pyautogui.hotkey('ctrl','v')

Ça y est. plus tard

unicodedecodeerror 'ascii' codec can't decode

Si vous vous rencontrez malheureusement, empruntons la sagesse de nos prédécesseurs et changeons le code de caractère par défaut en UTF-8.

Résumé

En gros, je viens de résumer l'exemple de Bienvenue dans la documentation de PyAutoGUI! + Mon propre essai et C'est un registre d'erreurs, mais j'espère qu'il y a des gens qui peuvent aider seuls. Ayons une bonne vie automatisée!

Recommended Posts

En utilisant PyAutoGui, j'ai essayé d'automatiser le test d'interface utilisateur du programme VB6 fonctionnant sur Windows Server 2003 R2 (feuille de triche de commande d'entrée).
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
Je souhaite prendre une capture d'écran du site sur Docker en utilisant n'importe quelle police
Je veux automatiser ssh en utilisant la commande expect!
J'ai essayé de comparer la précision des modèles d'apprentissage automatique en utilisant kaggle comme thème.
Je veux automatiser ssh en utilisant la commande expect! partie 2
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
J'ai essayé d'automatiser [une certaine tâche] à l'aide d'une tarte à la râpe
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé de sortir le journal d'accès au serveur en utilisant Node.js
J'ai essayé de créer une configuration RAID logicielle SATA qui démarre le système d'exploitation sur Ubuntu Server
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
Une commande pour vérifier facilement la vitesse du réseau sur la console
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai essayé d'effectuer une analyse de cluster de clients à l'aide des données d'achat
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
En utilisant COTOHA, j'ai essayé de suivre le cours émotionnel de la course aux meros.
J'ai essayé de comprendre attentivement la fonction d'apprentissage dans le réseau de neurones sans utiliser la bibliothèque d'apprentissage automatique (première moitié)
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
J'ai essayé le serveur asynchrone de Django 3.0
J'ai essayé de résumer la commande umask
J'ai essayé de prédire la détérioration de la batterie lithium-ion en utilisant le SDK Qore
J'ai essayé de notifier la mise à jour de "Hameln" en utilisant "Beautiful Soup" et "IFTTT"
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
J'ai essayé d'automatiser le dépôt de 100 yens des courses de chevaux Rakuten (python / sélénium)
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
J'ai créé un programme pour rechercher des mots sur la fenêtre (développement précédent)
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
J'ai essayé d'automatiser le travail de masquage du visage de l'image de coordination pour l'usure
J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot