Seite 1 von 1

pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 14:54
von Campionissimo
Hallo,

ich möchte mit pywinauto eine Anwendung starten, buttons betätigen und was schreiben sowie anklicken.
Problem!
z.B. Beim Editor funktioniert alles.
Aber bei einer anderen Oberfläche nicht.
Das wäre mein Code für Notepad

Code: Alles auswählen

from pywinauto import application

app = application.Application.start("notepad.exe")

app.Notepad

app.Notepad.MenuSelect("Datei->Speichernunter")
app.Speichernunter.SpeicherninComboBox.Select("Desktop")
app.Speichernunter.DateinameEdit.SetEditText("dfgsdfg.txt")
app.Speichernunter.CodierungComboBox.Select("Unicode")
#app.Speichernunter.DateitypComboBox.Select("Alle Dateien")

app.SpeichernUnter.Speichern.Click()
Weiß wer warum es mit dem editor funktioniert und nicht mit anderen Oberflächen.
Meine Vermutung ist das es keine Windowsoberfläche ist und das irgendwer programmiert hat

Vielleicht weiß ja jemand was.

Danke

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 15:05
von sparrow
Campionissimo hat geschrieben:Meine Vermutung ist das es keine Windowsoberfläche ist und das irgendwer programmiert hat
Das Programm das du bedienen willst? Wäre es dann vielleicht hilfreich uns das zu nennen?

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 15:13
von Campionissimo
Ja es ist kein Windowsprogramm, sondern von einem programmiert worden. Das kennt keiner!
Aber wie könnte ich es schaffen diese buttons zu drücken oder was zu schreiben.

Gruß

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 15:15
von /me
Campionissimo hat geschrieben:Ja es ist kein Windowsprogramm, sondern von einem programmiert worden
Ich verstehe jedes einzelne Wort, den Satz aber nicht.

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 15:31
von Campionissimo
Das Programm das ich bedienen will ist kein Windowsprogramm.
Also von jemanden programmiert worden.
Also kein öffentliches Tool.
Besser ;)
Trotzdem noch die Frage wie ich es fernsteuern kann.

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 16:27
von Xynon1
Logisches Resultat also:
- Windowsprogramme werden nicht programmiert (und fallen vom Himmel)
- Alles was von "jemanden" programmiert wurde ist nicht öffentlich
- oder alles was kein Windowsprogramm ist, ist nicht öffentlich

Ich bin verwirrt. :?

So zurück zum Thema welches Programm willst du steuern, läuft dieses überhaupt unter Windows(ist schließlich die Bedingung von pywinauto) und eventuell könntest du mal beschreiben was du dort nicht machen kannst bzw. was für ein Fehler ausgegeben wird.

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 16:59
von Campionissimo
Ja logisch fallen die vom Himmel.
ich mein eigentlich das hat jemand programmiert für ein bestimmtes Produkt, dass nicht für jedermann zugänglich ist.

Natürlich sind viele Sachen öffentlich, aber auch manche nicht;)

Aber egal.

Es läuft unter windows. Wenn ich den Code oben anpasse funktioniert es einfach nicht und gibt diese Fehlermeldung zurück:

Code: Alles auswählen

Traceback (most recent call last):
AttributeError: 'function' object has no attribute 'delete'
und Delete heißt der Button

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 17:13
von EyDu
Hallo.

Du solltest deine Post selber noch einmal lesen und dich fragen, ob sie verständlich sind und genügend Information enthalten, um dir zu helfen ;-) Zeige doch einfach den richtigen Code und nicht irgend welche Beispiele, sonst endet das nur in überflüssigen Spekulationen.

Sebastian

Re: pywinauto combobox Funktion

Verfasst: Montag 16. Mai 2011, 19:24
von Campionissimo
Das ist der code da oben, nur andere boxennamen.

Code: Alles auswählen


app.Connect.Delete.Click()

Delete ist ein Button

Jetzt die Fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
AttributeError: 'function' object has no attribute 'delete'
und Delete heißt der Button

Da wahrscheinlich der button von der Oberfläche nicht richtig mit dem Code verknüpft ist kann den anscheinend nicht richtig ansprechen

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 03:54
von Zap
Wenn du deine Fehlermeldung richtig lesen würdest, würdest du feststellen, dass sie fogendes sagt: "Das Funktionsobjekt hat kein Attribut 'delete'".
Demnach ist "Connect" eine Funktion die man wahrscheinlich in irgendeiner Form aufrufen müsste.

Warum machst du es allen anderen und auch dir so schwer und zeigst nicht deinen kompletten Code? In deinem "Code da oben" sehe ich keinen Aufruf von Connect.

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 07:18
von Campionissimo
Also das ist mein Code:

Code: Alles auswählen

from pywinauto import application

app = application.Application()
app.start("FuTe.exe")

app.FuTe

app.FuTe.MenuSelect("FuTe->Connect")
app.Connect.PortComboBox.Select("1")
app.Connect.BaudrateComboBox.Select("115200")
app.Connect.LogfilenameEdit.SetEditText("C:\ewrewrwer")
app.Connect.ConnectClick()
- Das Programm heisst FuTe
- Ich öffne die Datei und das Funktioniert ;)
- Dann wähle ich im Menü Connect aus und das funktioniert auch
- Jetzt kommt ein neues Fenster Connect
Wo ich was einstellen kann
- Den Port auf 1
- Die Baudrate auf 115200
- Und wo ich die Datei hinspeichern möchte
- Dann noch den Button connect für die Verbindung
Fehlermeldung für den Button Connect

Code: Alles auswählen

Traceback (most recent call last):
AttributeError: 'function' object has no attribute 'Connect'
Danke

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 09:15
von Xynon1
Ich würde jetzt einfach mal vermuten das geht so nicht, weil "Connect", "Connect_", "connect" und "connect_" von pywinauto selbst vorbelegt sind, nicht überschrieben werden und daher nicht als Attribute gesetzt werden können.

Versuch mal Connect als Keyword zunutzen, sprich app["Connect"].PortComboBox.Select("1"). Ansonsten musst du die Auswahl noch etwas weiter eingrenzen. Lies hiermal nach http://pywinauto.googlecode.com/hg/pywi ... ation.html

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 09:26
von BlackJack
@Campionissimo: Heisst das jetzt, dass der Fehler erst bei der letzten Zeile auftritt!? Kann es sein, dass `Connect` im letzten Schritt nicht eindeutig ist und Du vielleicht besser `ConnectButton` schreiben solltest?

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 10:48
von Campionissimo
@Xynon1
Vielen Dank. Das hat mir sehr geholfen mit den ["..."]
Tatsächlich ist Connect schon vorbelegt gewesen.
Coole Sache. Das Fernsteuern funzt. Bin jetzt glücklich, dass jemand das gewusst hat.

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 15:51
von Campionissimo
Ach man doch noch ein Problem;(

Code: Alles auswählen

app = application.Application()
app.start("FuTe.exe")
app.FuTe

app.FuTe.MenuSelect("FuTe->Connect")

app["Connect"].PortComboBox.Select("3")
app["Connect"].BaudrateComboBox.Select("115200")
app["Connect"].Logtofile.Click()
a = int(time.strftime("%d%m%Y%H%M%S"))     
app["Connect"].logfilenameEdit.SetEditText("%s Daten" %a )
app["Connect"]["Select..."].Click()
app.Speichernunter.speicherninComboBox.Select("Daten")
#app.Speichernunter.DateitypComboBox.Select("TXT")
#app.Speichernunter.Speichern.Click()
#app["Connect"].Connect.Click()
      
Und zwar, ich möchte wenn ich im Dialogfeld 'Speichern unter' bin.
Bei 'Speichern in' im Desktop den Ordner 'Daten' auswählen.

aber irgendwie geht das nicht oder ich habs nicht gefunden. Ich kann nur statt der Daten ne 0 eingeben und das Verzeichnis wird gewechselt und das wars leider.

Fehlermeldung:

Code: Alles auswählen

ValueError: list.index(x): x not in list
hoffentlich weiss wieder jemand was

Re: pywinauto combobox Funktion

Verfasst: Dienstag 17. Mai 2011, 16:44
von Xynon1
Spar dir diese kurzen Tracebacks entweder postest du den ganzen oder du lässt es. Aber ich will dir keinen Vorwurf machen, das die Fehlermeldungen in pywinauto "detaliert" sind ist mir auch schon aufgefallen.
Der Fehler besagt aber schlicht das es kein Verzeichnis "Daten" in der ComboBox gibt, den musst du schlißlich auf dem Desktop suchen. - Also in dem Fenster rechts daneben. Ich würde empfehlen bei "Dateiname: " einfach den kompletten Pfad mit Dateinamen anzugeben, statt sich durch das Menü virtuell zu klicken. Sollte schließlich auch funktionieren.

Re: pywinauto combobox Funktion

Verfasst: Mittwoch 18. Mai 2011, 07:34
von Campionissimo
Stimmt, das mit dem Pfad angeben passt. Dann brauch ich wirklich nicht so viel klicken ;)
Aber es zu wissen wäre auch gut.
Und das mit der gekürzten Fehlermeldung.
Das war wirklich nur ein 4 zeiler.
Und die Zeilen die ich nicht gepostet sagen nur aus wo der Fehler war. Wollte keinen zu nahe treten.
Aber Danke für die zwei hilfreichen AntwortenFunzt jetz.
Wieder Danke an Xynon1

Re: pywinauto combobox Funktion

Verfasst: Mittwoch 18. Mai 2011, 09:19
von EyDu
Campionissimo hat geschrieben:Und die Zeilen die ich nicht gepostet sagen nur aus wo der Fehler war.
Das ist, neben der Fehlermeldung, die wichtigste Information ;-) Zumal man bei deinen Beiträgen öfter mal rätseln musste, in welcher Zeile der Fehler auftritt. Du magst mit den vollständigen Tracebacks im Moment noch nicht viel anfangen können, für andere Benutzer sind sie aber eine große Hilfe.