GUI Absturz bei nicht vorhandenem Element

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

re1hro
Posts: 19
Joined: 19 Feb 2020, 14:02

GUI Absturz bei nicht vorhandenem Element

Post by re1hro » 30 Dec 2020, 05:07

Moin moin, ich hab hier ein Script was auch soweit gut funktioniert ABER :-)
in dem erstem Befehl wir eine Nummer in ein Edit Feld einer Webseite eingetragen. Im zweitem Schritt wird auf einen Searchbutton auf der Webseite geklickt. Wird die Nummer gefunden öffnet sich eine Seite in der es einen Detail Botton gibt der dann auch geklickt wird.

Wird die Nummer aus dem Edit Feld aber nicht gefunden Bricht das ganze Script ab weil nicht wie erwartet der Detaibutton zum klicken da ist und ich muss die Gui dann neu starten. Wie kann ich verhindern wenn eine Nummer nicht gefunden wird das die ganze GUI abbricht

Code: Select all

wb.document.getElementsByName("searchDtagVertragsnummer")[0].value := vertragsnummer  ;trägt die DtagVertragsnummer ein
Sleep, 1000 
wb.document.getElementsByName("button_Search")[0].click() ;klickt auf den searchbutton
Sleep, 2000
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
Sleep, 500
gregster
Posts: 9014
Joined: 30 Sep 2013, 06:48

Re: GUI Absturz bei nicht vorhandenem Element

Post by gregster » 30 Dec 2020, 05:09

Try (und ggf Catch) würde wohl helfen.
re1hro
Posts: 19
Joined: 19 Feb 2020, 14:02

Re: GUI Absturz bei nicht vorhandenem Element [gelöst]

Post by re1hro » 30 Dec 2020, 05:25

Super, vielen Dank ich hab das jetzt so gelöst

Code: Select all

wb.document.getElementsByName("searchDtagVertragsnummer")[0].value := vertragsnummer  ;trägt die DtagVertragsnummer ein
Sleep, 1000 
wb.document.getElementsByName("button_Search")[0].click() ;klickt auf den searchbutton
Sleep, 2000
try
{
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
}
catch
{
   MsgBox, Die Vertragsnummer wurde nicht gefunden
   return
}
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
Sleep, 500
gregster
Posts: 9014
Joined: 30 Sep 2013, 06:48

Re: GUI Absturz bei nicht vorhandenem Element

Post by gregster » 30 Dec 2020, 05:30

Die vorletzte Zeile ist dann zu viel, oder? Die würde ja wieder den Fehler auslösen - vermutlich umgehst du das Problem momentan durch das Return im Catch-Zweig, d.h. diese Zeile wird im Fehlerfall nie erreicht (und jetzt hast du den Klick ja schon im Try-Block). Aber bei Vorhandensein würde der Button jetzt zweimal geklickt.
Das Sleep, 500 würde ich dagegen noch in den Try-Block packen... es gehört doch zur Klick-Aktion, oder?
re1hro
Posts: 19
Joined: 19 Feb 2020, 14:02

Re: GUI Absturz bei nicht vorhandenem Element

Post by re1hro » 30 Dec 2020, 06:04

Oh ja ups da hat sich beim kopieren irgendwie der Fehlerteufel eingeschlichen :-) so sihts jetzt aus und läuft prima... Ja ich hab das mit return gemacht dann geht's halt bei einem fehler nicht weiter und ich kann ne andere nummer eingeben

Code: Select all

wb.document.getElementsByName("searchDtagVertragsnummer")[0].value := vertragsnummer  ;trägt die Vertragsnummer ein
Sleep, 1000 ;warten bis klick auf Start

wb.document.getElementsByName("button_Search")[0].click() ;klickt auf den searchbutton
Sleep, 2000

try
{
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
}
catch
{
   MsgBox, Die Vertragsnummer %EditVertragsnummer% wurde nicht gefunden
   return
}

Sleep, 500
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: GUI Absturz bei nicht vorhandenem Element

Post by effel » 30 Dec 2020, 13:10

funktioniert das ?

Code: Select all

;GUI Absturz bei nicht vorhandenem Element  
;https://www.autohotkey.com/boards/viewtopic.php?f=9
#SingleInstance force
#NoEnv
SetKeyDelay 20
SetTitleMatchMode, 2

wb.document.getElementsByName("searchDtagVertragsnummer")[0].value := vertragsnummer  ;trägt die Vertragsnummer ein
Sleep, 1000 ;warten bis klick auf Start

wb.document.getElementsByName("button_Search")[0].click() ;klickt auf den searchbutton
Sleep, 2000

Loop {
	Try {
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
	}
	catch e {
		Tooltip Fehler
		FehlerPassiert := 1
		MsgBox, Die Vertragsnummer %EditVertragsnummer% wurde nicht gefunden
	}
} until !FehlerPassiert
gregster
Posts: 9014
Joined: 30 Sep 2013, 06:48

Re: GUI Absturz bei nicht vorhandenem Element

Post by gregster » 30 Dec 2020, 13:14

Solltest du nicht FehlerPassiert irgendwo am Schleifenbeginn zurücksetzen? Im Moment kommst du nie mehr aus der Schleife raus, sobald einmal ein Fehler passiert ist... oder? Selbst bei späterem Erfolg.

Und was passiert, wenn es die Vertragsnummer (und damit den Detailbutton) tatsächlich überhaupt nicht gibt - und nicht geben wird in absehbarer Zeit? Es also kein Timingproblem ist. Dann hängst du eh fest.
re1hro
Posts: 19
Joined: 19 Feb 2020, 14:02

Re: GUI Absturz bei nicht vorhandenem Element

Post by re1hro » 04 Jan 2021, 04:49

Ja tatsächlich war das mit dem Return nich so der beste Griff :-D irgendwie steckte ich dann noch wenn ich die Richtige nummer eingab in dem falschem Ablauf fest. Ich hab das jetzt so gelöst das die GUI bei klick OK der msgbox neu gestartet wird. Ein Neustart is nich weiter schlimm da es eh nur eine Suche is.

Code: Select all

wb.document.getElementsByName("searchDtagVertragsnummer")[0].value := vertragsnummer  ;trägt die Vertragsnummer ein
Sleep, 1000 ;warten bis klick auf Start

wb.document.getElementsByName("button_Search")[0].click() ;klickt auf den searchbutton
Sleep, 2000

try
{
wb.document.getElementsByName("button_Details")[0].click() ;klickt auf den detailbutton
}
catch
{
   MsgBox, Die Vertragsnummer %EditVertragsnummer% wurde nicht gefunden
   reload
}

Sleep, 500
Post Reply

Return to “Ich brauche Hilfe”