[PYTHON] Führen Sie (ältere) Windows-Apps mit dem Windows-Anwendungstreiber aus

Ich hatte die Möglichkeit, einen einfachen automatisierten Test für eine ältere Windows-App (Win32) mit Windows-Anwendungstreiber zu schreiben, und fasste den Aufbau und die Berührung der Umgebung zusammen. Ich werde. [^ 1]

Umgebung

Umgebung

  1. Ändern Sie Windows in ** Entwicklermodus **. Suchen Sie im Suchfeld nach ** Entwicklereinstellungen ** und wählen Sie: devmode.png
  2. Installieren Sie Python. Vergessen Sie nicht, den Pfad zu übergeben: mild_smile:
  3. Installieren Sie den Windows-Anwendungstreiber (https://github.com/microsoft/WinAppDriver). Sie müssen lediglich das MSI herunterladen und ausführen.

Versuchen Sie, etwas mit dem Windows-Anwendungstreiber auszuführen

Starten Sie vor dem Ausführen des Skripts zunächst Windows-Anwendungstreiber an der Eingabeaufforderung. Wenn es startet, geht es in einen Standby-Zustand.

c:\Program Files (x86)\Windows Application Driver>WinAppDriver.exe
Windows Application Driver listening for requests at: http://127.0.0.1:4723/
Press ENTER to exit.

Vorerst habe ich versucht, es zu verschieben und nach einem Beispiel gesucht, aber es funktioniert nur mit einer englischen Benutzeroberfläche: frowning2: Aus diesem Grund habe ich den Ablauf des Startens und Schließens des Notepads und des Speicherns geschrieben.

wda_test.py


import unittest
import os
import time
from appium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common import exceptions

save_file = "c:\\temp\\test.txt"

def remove_save_file():
    if os.path.exists(save_file):
        os.remove(save_file)

class WindowsApplicationDriverTests(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        remove_save_file()
        desired_caps = {}
        desired_caps["app"] = r"C:\Windows\System32\notepad.exe"
        self.driver = webdriver.Remote(
            command_executor='http://127.0.0.1:4723',
            desired_capabilities= desired_caps)

    @classmethod
    def tearDownClass(self):
        remove_save_file()
        self.driver.quit()

    def test_edit_and_close_with_save(self):
        #Zeichen eingeben
        self.driver.find_element_by_class_name("Notepad").send_keys("abcdefg")
        #Anweisungen zum Beenden des Notizblocks
        self.driver.find_element_by_class_name("Notepad").send_keys(Keys.ALT, Keys.F4)
        #Warten Sie, bis die Bestätigungsmeldung zum Speichern angezeigt wird, und klicken Sie auf die Schaltfläche Speichern
        time.sleep(1)
        self.driver.find_element_by_name("sparen(S)").send_keys(Keys.ENTER)
        #Warten auf das Dialogfeld Speichern unter
        time.sleep(3)
        #Geben Sie den Dateinamen ein
        self.driver.find_element_by_name("speichern als").send_keys(save_file)
        #Drücken Sie die Speichertaste
        self.driver.find_element_by_name("sparen(S)").send_keys(Keys.ENTER)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(WindowsApplicationDriverTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

Bitte beachten Sie, dass der Vorgang möglicherweise nicht wie erwartet ausgeführt wird, es sei denn, Sie warten, bis die Meldung oder der Dialog angezeigt wird. Sie können sehen, dass Notepad automatisch ausgeführt wird, wenn Sie das Skript wie unten gezeigt ausführen.

python wad_test.py

Impressionen

Referenz

[^ 1]: Als Ergebnis des Schreibens scheint es an der Referenzstelle zu enden: schwerwiegend:

Recommended Posts

Führen Sie (ältere) Windows-Apps mit dem Windows-Anwendungstreiber aus
Führen Sie Python mit PyCharm aus (Windows)
Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Automatisieren Sie Windows-Anwendungstests mit Windows Application Driver-Python Edition
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Entwickeln Sie Windows-Apps mit Python 3 + Tkinter (Vorbereitung)
Führen Sie eine Python-Webanwendung mit Docker aus
GUI-Automatisierung mit Python x Windows App Driver
Entwickeln Sie Windows-Apps mit Python 3 + Tkinter (exe-Datei)
Einstellung zum Ausführen der Anwendung im Unterverzeichnis mit nginx + uwsgi
Führen Sie Python mit VBA aus
Führen Sie prepDE.py mit python3 aus
Führen Sie Blender mit Python aus
Python ab Windows 7
Führen Sie iperf mit Python aus