@All: Vielen Dank. Jetzt sind es nur noch Feinheiten. Das grobe tut jetzt mal.
autoBert: Die Lösung mit Step 3 war einfach nur perfekt. Vielen Dank
Beiträge von Code4Fun
-
-
Erst mal vielen Dank. autoBert's Tip mit Step 3 war perfekt. Jetzt habe ich noch folgendes kleines Problem
Ich sollte noch 3 vorgestellte Tabulatoren parsen. Hier mal die Codezeile, die so nicht geht
Code$line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', {TAB}{TAB}{TAB} & '<br />')Wie bilde ich denn sowas ab?
-
Hallo zusammen,
ich muss eine XML Seite parsen. Dazu habe ich mir einen ersten großen Block mit _StringBetween rausgesucht. Dann diesen wieder mit _StringBetween unterteilt. Jetzt habe ich meine gewünschten Ergebnisse, jedoch ist es so, dass ich z.B. das 1. Ergebnis benötigte, das 2. und 3. nicht, das 4. wieder, das 5. und 6. nicht, das 7. wieder, usw.
Wie kann ich denn sowas hinbekommen?
-
Hallo, ich möchte mir gerne eine kleines Skript schreiben, welche sich bei meinem Online Zeitungsverlag anmeldet und dort dann ein PDF herunterlädt.
Aktuell scheitere ich jedoch schon am Login.
Was ist bisher habe
Code
Alles anzeigen#include <IE.au3> ; Create a browser window and navigate to hotmail $oIE = _IECreate() _IENavigate($oIE, "https://ezeitung.swp.de/digiPaper/html/start.html", 1) ; get pointers to the login form and username and password fields $o_form = _IEFormGetObjByName($oIE, "f1") $o_login = _IEFormElementGetObjByName($o_form, "user") $o_password = _IEFormElementGetObjByName($o_form, "password") ; Set field values and submit the form _IEFormElementSetValue($o_login, "Mein Benutzername") _IEFormElementSetValue($o_password, "Mein Passwort") _IEFormSubmit($o_form) ;ExitSeite überprüfen
C
Alles anzeigen#include <IE.au3> #include <MsgBoxConstants.au3> ; Stellt einen Verweis auf die Sammlung von Formen auf einer Seite her ; Und zeigt dann, in einer Schleife, alle Informationen für jede Form an $oIE = _IECreate() _IENavigate($oIE, "https://ezeitung.swp.de/digiPaper/html/start.html",1) Local $oForms = _IEFormGetCollection($oIE) MsgBox($MB_SYSTEMMODAL, "Formen Informationen", "Es befinden sich " & @extended & " Formen auf dieser Seite") For $oForm In $oForms MsgBox($MB_SYSTEMMODAL, "Form Information", $oForm.name) NextErgebnis: Es befinden sich 0 Formen auf dieser Seite
Aber auf der rechten Seite ist doch eindeutig Anmeldung für eZeitung-Kunden zu sehen. Mit E-Mailadresse als Benutzername und dem Passwort.
Mit F12 bekomme ich folgende Inhalte geliefert:
<input type="text" required="" id="user" name="user" class="size1of1 ml10">
<input type="password" required="" id="password" name="password" class="size1of1 ml10">
Habe leider damit gar keine Erfahrung. Danke für eure erste Unterstützung, werde diese nach dem Login bestimmt nochmals brauchen

-
Vielen Dank an Alle
-
Ach Du Sch.....
Die gute Nachricht. Es geht. Die schlechte. Außer der MsgBox kommt mir der Rest spanisch vor. Ich gehe mal davon aus, dass man so eine "schicke blaue Messagebox" nicht mit Autoit hinbekommt, sondern auf C# oder so setzen müsste.
Bitnugger: vielen Dank.
-
Hallo Bitnugger,
danke für die schnelle Antwort, aber eine Autoit "MessageBox" sieht ganz anderst aus und ich kann in der Zeit, wo die Messagebox aktiv ist, auch noch andere Fenster anklicken. Das ist irgend so ein "Sicherheitsmodus", ich kenne den Begriff aber nicht. Sowas möchte ich aber gerne erzeugen.
Danke
P.S. Anbei mal ein Screenshot, damit Ihr euch "ein Bild" davon machen könnt
-
Hallo,
es gibt unter Windows ja den "net send" Nachfolger msg.exe. Wenn diese ausgeführt wird, erscheint beim Empfänger auf dem Bildschirm mittig die Nachricht und der Rest vom Monitor ist "klick geschützt" (keine Ahnung, wie ich das beschreiben soll). Man muss auf jedenfall die Nachricht entweder mit OK bestätigen, oder aber eine gewisse Zeit warten, bis das Fenster wieder verschwindet.
Folgende Fragen habe ich:
1.) wie nennt man diese Art von Fenster im Fachjargon?
2.) Ich möchte gerne ein ganz einfaches Tool bauen, wo 2 Personen einer 3. Personen mit einem klick auf einen GUI Button eine solche Art von Nachricht versenden können. Vielleicht gibt es ja schon ein ähnliches Projekt, dann würde ich mich natürlich über etwas Sourcecode sehr freuen.
Wichtig: Das ganze soll keine AD Integration haben. Schön wäre, wenn man das auf den PCs als Dienst laufen lassen könnte und einfach auf einen gewissen Port hören würde.
Danke
-
Hi alpines,
bin jetzt ehrlich gesagt etwas erschlagen. Habe das Programmieren ja nie wirklich gelernt, sodass ich mich da erst mal in Ruhe einlesen muss. Ich werde mich dann wieder melden. Vielen Dank
-
OK, Du hast es so gewollt

Ich hoffe niemanden ganz schlecht. Habe es jetzt kurz quick and dirty neutralisiert, vielleicht passt jetzt auch was nicht mehr, aber es geht ja um das Prinzip
Ziel sollte sein, dass Func _DBConnect($Case) und Func _DatabaseSelection($SelectedDatabase) in einer zentralen *.au3 laufen, welche dann in die indiviuellen Scripte includet werden.
Die individuellen Scripte haben dann z.B. eine Func _SQLAbfrage($SelectedDatabase, $URL) , kann aber auch anderst sein.
Bisher habe ich ja (vielleicht nicht in diesem Beispiel) der Reihe nach eine DB geöffnet, mein SQL Statement abgefeuert, meinen Output generiert, die DB geschlossen und dann via Array weiter zur nächsten DB usw. Wie mache ich dass den in einem abfragenden Script. Ich habe da echt Kopfweh, wenn ich mir überlege, von wo nach wo ich da mit Parametern hin und herspringen muss.
Es wäre schön, wenn mir jemand ein Gerüst baut, damit ich weiß, welche Funktion - mit entsprechenden Parameterübergaben - ich wo genau einbauen muss und wie ich das alles "returne", damit ich die notwendigen Informationen im abfragenden Script übermittelt bekomme.
Danke!
Beispiel Code
C
Alles anzeigen#include <Array.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <MSSQL.au3> #include <UnixTimeMod.au3> Global $sVersion = "1.2" Global $hGUI Global $hGUIBreite = 600 Global $hGUIHoehe = ((@DesktopHeight / 100) * 4) Global $sLabel01, $sLabel02, $sInput01, $hButton1, $sqlCon, $sLabel03, $ComboBox, $IP, $IP2 = "10.10.0.31", $IP1 = "10.10.0.30", $SelectedDatabase Global $sDatenbanken = "KundenDB1|KundenDB2|KundenDB3" Global $sLogfile = FileOpen(@ScriptDir & "\BenutzerSuchen.htm", 10) Global $LastLoginTime, $datum, $myCounter = "0" Global $CreateATTime FileInstall(".\TableSort.js", @ScriptDir & "\TableSort.js") Opt("TrayAutoPause", 0) ; Script will not be paused when clicking the tray icon. Opt("TrayOnEventMode", 1) Opt("TrayMenuMode", 1 + 2) #Region ; GUI erstellen $hGUI = GUICreate("Benutzer auf lokalen Datenbanken finden - Version: " & $sVersion, $hGUIBreite, $hGUIHoehe, -1, -1) ; GUI mit Überschrift $sLabel01 = GUICtrlCreateLabel("Den Benutzer ", 10, 10) $sInput01 = GUICtrlCreateInput("", 100, 8, 380, 20) $hButton1 = GUICtrlCreateButton("suchen", 500, 8, 80, 20, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON)) GUISetState(@SW_SHOW) #EndRegion ; GUI erstellen While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE _MSSQL_End($sqlCon) GUIDelete() Exit Case $hButton1 _HTMLbauen() _DBAbfragen() EndSwitch WEnd #Region ; Datenbanken Func _DBAbfragen() _DBArray() Exit EndFunc ;==>_DBAbfragen Func _DBArray() Local $arDatenbanken = StringSplit($sDatenbanken, "|") If $arDatenbanken[0] = 1 Then ; Wenn String nicht gesplittet wurde (Seperator nicht enthalten, String leer), dann Fehler MsgBox(0, 'Achtung', 'Keine Datenbank gefunden') Else For $i = 1 To UBound($arDatenbanken) - 1 ; Hier könnte man auch $arDatenbanken[0] statt UBound($arDatenbanken) -1 verwenden, da die Anzahl dort geführt wird _DBConnect($arDatenbanken[$i]) Next EndIf FileWriteLine($sLogfile, '</tbody>') FileWriteLine($sLogfile, '</table>') FileWriteLine($sLogfile, '</body>') FileWriteLine($sLogfile, '</html>') FileClose($sLogfile) Local $sDefaultBrowser = RegRead("HKEY_CLASSES_ROOT\http\shell\open\command", "") Local $aTrimBrowser = StringSplit($sDefaultBrowser, '-') Run($aTrimBrowser[1] & ' "' & @ScriptDir & '\BenutzerSuchen.htm"', "", @SW_MAXIMIZE) ; starten Firefox und öffnet die HTML Seite GUIDelete() Exit EndFunc ;==>_DBArray Func _DBConnect($Case) ; Je nach Fall (Case), wird die Funktion unterschiedlich bestückt If $Case = "KundenDB1" Then ; ARGE $SelectedDatabase = "KundenDB1" $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut EndIf If $Case = "KundenDB2" Then ; ARSTEC $SelectedDatabase = "KundenDB2" $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut EndIf If $Case = "KundenDB3" Then ; Ascalia $SelectedDatabase = "KundenDB3" $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut EndIf EndFunc ;==>_DBConnect Func _DatabaseSelection($SelectedDatabase) ; Zugangsdaten für Datenbank suchen If $SelectedDatabase = "KundenDB1" Then $URL = "https://fqdn/Kunde1/" $IP = $IP1 $User = "lala" $DB = "KundenDB1aberirgendiedochmaleinanderername" $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB EndIf If $SelectedDatabase = "KundenDB2" Then $URL = "https://fqdn/Kunde2/" $IP = $IP2 $User = "bubu" $DB = $SelectedDatabase $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB EndIf If $SelectedDatabase = "KundenDB3" Then $URL = "https://fqdn/Kunde3/" $IP = $IP2 $User = "hohoho" $DB = $SelectedDatabase $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB EndIf ConsoleWrite("Aktuelle Datenbank: " & $SelectedDatabase & @CRLF) _SQLAbfrage($SelectedDatabase, $URL) EndFunc ;==>_DatabaseSelection #EndRegion ; Datenbanken Func _SQLAbfrage($SelectedDatabase, $URL) Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") Local $SQLQuery = _MSSQL_Query($sqlCon, "SELECT USERNAME, VORNAME, NACHNAME, user_ID, ENABLED, ANGELEGT_AM, LETZTER_LOGIN FROM USERS where USERNAME like '%" & GUICtrlRead($sInput01) & "%';") ; Check for errors If @error Then MsgBox($MB_SYSTEMMODAL, "COM Error1", "@error is set to COM error number." & @CRLF & "@error = 0x" & Hex(@error), 1) $aSQLQueryErgebnis = $SQLQuery.GetRows If Not IsArray($aSQLQueryErgebnis) Then ConsoleWrite("Keine Daten in " & $SelectedDatabase & " gefunden" & @CRLF) Else For $i = 0 To UBound($aSQLQueryErgebnis) - 1 ; Hier könnte man auch $arDatenbanken[0] statt UBound($arDatenbanken) -1 verwenden, da die Anzahl dort geführt wird $myCounter = $myCounter + 1 ;~ ConsoleWrite(_ArrayToHTMLTable($aSQLQueryErgebnis, True, True)); Array Zeilenweise in Konsole auslesen FileWriteLine($sLogfile, ' <tr>') FileWriteLine($sLogfile, ' <td>' & $myCounter & '</td>') ; Nummer FileWriteLine($sLogfile, ' <td>' & $SelectedDatabase & '</td>') ; Datenbank ConsoleWrite("DB ist: " & $SelectedDatabase & @CRLF) ; Datenbank FileWriteLine($sLogfile, ' <td>' & $aSQLQueryErgebnis[$i][0] & '</td>') ; Benutzername FileWriteLine($sLogfile, ' <td>' & $aSQLQueryErgebnis[$i][1] & '</td>') ; Vorname FileWriteLine($sLogfile, ' <td>' & $aSQLQueryErgebnis[$i][2] & '</td>') ; Nachname FileWriteLine($sLogfile, ' <td>' & $aSQLQueryErgebnis[$i][3] & '</td>') ; ID If $aSQLQueryErgebnis[$i][4] = "0" Then ; Aktiv FileWriteLine($sLogfile, ' <td>Nein</td>') ;Nein Else FileWriteLine($sLogfile, ' <td>Ja</td>') ; Ja EndIf Next EndIf Return $myCounter EndFunc ;==>_SQLAbfrage -
Hallo Alpine,
danke für die Hilfe. Es wäre hier zuviel unzähliger unsauberer Code. Es geht mir hier ja auch nur um eine prinzipielle Gedankenstützte.
Bisher verwende ich ja in meinem Code den #include <MSSQL.au3>
Wenn ich Dich richtig verstanden habe, dann würde ich jetzt eine z.B. MSSQLConnect.au3 schreiben, welche den #include <MSSQL.au3> beinhaltet.
In meinem "abfragenden Script" würde ich dann als #include <MSSQLConnect.au3>. Ist das soweit richtig, oder denke ich hier schon falsch?
Wenn das abfragende Script compiliet wird, enthält es dann die gesamte Logik von MSSQL.au3 und von MSSQLConnect.au3?
Und wie "returne anschließend das Handle zur MySQL Verbindung um damit weiterzuarbeiten" ich das Handle von MSSQLConnect.au3 in mein "abfragendes Script"?
Ich will hier von Grund auf meine Scripte neu (und hoffentlich besser) bauen.
Danke für Deine Gedult.
-
returne anschließend das Handle zur MySQL Verbindung um damit weiterzuarbeiten.
Hallo, abgesehen davon das es sich um eine MSSQL handelt (was der übigen Aussage aber keinen Abbruch tut), wäre ich um ein kleines Syntax Beispiel sehr dankbar. Ich raffe es gerade nicht, wie ich die unterschiedlichen Scripte ineinander verbinden, bzw. miteinander compilieren muss. Vermutlich stehe ich blos auf einer sehr dicken Leitung
-
Hallo water,
Danke für die Idee. Ich vermute hier mich jetzt doch nicht klar genug ausgedrückt zu haben. Ob ich die variable Informationen nur im Script halte oder extern ist ja erst mal egal, hauptsache nur einmal vorhalten. Was mir Kopfzerbrechen macht, ist das ich aktuell pro Script IMMER die DB aufrufe, dort mich authentifiziere, dort meine DB Abfragen durchführe. Ich würde jetzt gerne eine Technik (die ich noch nicht kenne) verwenden, um ein Script "DB" zu schreiben, welches nur die DB Verbindung und Authentifizierung durchführt. In meinen weiteren Scripten "A", "B" usw. möchte ich dann das Script "DB" irgendwie aufrufen, damit im Script "A", "B" usw. die Datenbankverbindung schon "online" ist und ich dort dann direkt mit den unterschiedlichen DB Abfragen anfangen kann. Hoffe es jetzt verständlicher ausgedrückt zu haben. Sorry!
-
Hallo zusammen,
ich suche nach einer Optimierungsmöglichkeit für MSSQL Datenbankzugriffe. Aktuell habe ich verschiedene (vermutlich mehr schlecht als recht geschriebene) Autoit Script geschrieben, welche als #include
beinhalten. Leider ist es zur Zeit so, das ich so um die 40 verschiedene MSSQL Datenbanken der Reihe nach damit abfrage. Das geht soweit auch sehr gut, jedoch habe ich pro Datenbank die Information über die IP Adresse, den Datenbanknamen, den Datenbankbenutzer und das Passwort zu pflegen. Aktuell habe ich - wie oben schon geschrieben, dadurch viele Zeilen generiert, welche vielleicht gar nicht notwendig sind.
Mein eigentliche Problem ist hierbei jedoch folgendes. Wenn ich nur ein Autoit Script geschrieben hätte, dann würde ich ja auch nur in diesem die ganzen Datenbankverbindungen pflegen müssen. Da ich aber mehrere geschrieben habe, geht diese Pflege ins unermüdliche.
Jetzt habe ich folgende Idee, welche Ihr bestimmt als total einfach anseht, jedoch habe ich keine Ahnung oder geistigen Ansatz, wie ich das verwirklichen soll.
Ich würde jetzt ein eigenes, nennen wir es mal "DatenbankVerbindungsScript.au3" schreiben, in welchem die
integriert ist.
In diesem Script allein pflege ich ALLE Datenbankverbindungen, d.h. wenn sich an einer DB irgendwas ändert, muss ich nur noch hier was anpassen!
Jetzt möchte ich dann z.B. ein neues weiteres Script schreiben, welches eine bestimmte Datenbankabfrage durchführt. Wie gelingt es mir, aus diesem Script das DatenbankVerbindungsScript.au3 zu integrieren, sodaß die Abfrage auf die zuvor geöffnete Datenbanken zugreifen kann.
Vielleicht kann mir jemand einen klitzekleinen Code Ausschnitt mit anheften, damit ich das besser verstehe, das wäre echt Klasse
Hier auch nochmals zur beispielhaften Verdeutlichung. Wir haben z.B. 40 verschiedene Kundendatenbanken, in welche immer als Benutzername eine E-Mailadresse hinterlegt ist.
Jetzt schreibe ich (bisher) ein Script - mit alles Datenbankinformation in diesem Script - und arbeite mit mit einem Array der Reihe nach durch die einzelnen Datenbanke, d.h. DB öffnen, DB Abfrage, DB schließen, ab zur nächsten DB usw.
Vielen Dank für eure Hilfe
-
Hallo,
ich habe mir vor 6 Jahren ein Script geschrieben, welches folgende Zeilen enthielt:
Spoiler anzeigen
AutoIt
Alles anzeigen; Inputfeld für Programm Name $varBezeichnung = GUICtrlCreateInput("", $varInputFeldLinks, 200, $varInputFeldBreite, 25) ; Drag und Drop wird akzeptiert GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Anleitung zum Signieren $varAnleitungSignieren = GUICtrlCreateLabel("Bitte ziehen Sie die zu signierende Datei per Drag && Drop in das unten stehende Feld", -1, -1, 400, 30) GUICtrlSetPos($varAnleitungSignieren, $varInputFeldLinks, 245) ; Inputfeld für die Datei, welche signiert werden soll $varDragAndDropField = GUICtrlCreateInput("", $varInputFeldLinks, 265, $varInputFeldBreite, $varMainWindowHeight - 465) ; Drag und Drop wird akzeptiert GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Die 3 Buttons $varSignierenButton = GUICtrlCreateButton("Signieren", $varInputFeldLinks, $varMainWindowHeight - 180, 100, 40) $varLoeschenButton = GUICtrlCreateButton("Löschen", $varMitte - 50, $varMainWindowHeight - 180, 100, 40) $varBeendenButton = GUICtrlCreateButton("Beenden", $varMainWindowWidth - $varInputFeldLinks - 100, $varMainWindowHeight - 180, 100, 40) ; Verändert den Status eines GUI-Fensters GUISetState()Das geht auch heute noch, d.h. ich kann per Drag & Drop eine Datei in das Script ziehen und es wird mir der Pfad zur Datei angezeigt.
Bei meinem heutigen Script geht das nicht mehr
Spoiler anzeigen
AutoIt
Alles anzeigen$Label6 = GUICtrlCreateLabel("Bitte Exceltabelle per Drag und Drop hier unten reinlegen", 850, 170, 400, 20) $Input3 = GUICtrlCreateInput("", 850, 190, 770, 50) GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Das Label ist deaktiviert $Group2 = GUICtrlCreateGroup("Eingelesene Excel Informationen", 20, 250, 800, 650) ;_ErstelleExcelInListView() $idListview = GUICtrlCreateListView("", 25, 265, 790, 630) ; Leere Listview wird erstellt. ; Spaltenüberschriften werden erzeugt _GUICtrlListView_AddColumn($idListview, "Anrede", 50) _GUICtrlListView_AddColumn($idListview, "Vorname", 150) _GUICtrlListView_AddColumn($idListview, "Nachname", 150) _GUICtrlListView_AddColumn($idListview, "Telefon", 100) ;_GUICtrlListView_AddColumn($idListview, "Telefax", 100) _GUICtrlListView_AddColumn($idListview, "Benutzername", 300) _GUICtrlListView_SetItemCount($idListview, 500000) $iTimerE2A = TimerInit() _Excel2Array() $iTimerA2L = TimerInit() _GUICtrlListView_AddArray($idListview, $aResult) GUICtrlSetData($Label8, "Ladezeit Erstellung Array2ListView: " & TimerDiff($iTimerA2L) / 1000 & " Sekunden") ; GUICtrlCreateGroup("", -99, -99, 1, 1) $Group3 = GUICtrlCreateGroup("Erstelltes XML von Excel Informationen für die Webservices", 850, 250, 770, 650) GUICtrlCreateGroup("", -99, -99, 1, 1) GUISetState(@SW_SHOW)Was mache ich denn hier falsch?
Gruß C4F
-
Hat zwar jetzt gar nichts mit Autoit zu tun, aber vielleicht interessiert es ja doch den einen oder anderen.
Nutze ich ab und zu für die FB und ist schon lange auf dem Markt.
-
OK, habe mich jetzt etwas eingelesen. Werde das ganze mit der FF.au3 machen, da Firefox der Browser meiner Wahl ist. Das ganze funktioniert auch schon recht gut, allerdings hätte ich gerade zu FF.au3 folgende Frage, da ich hier die Funktionsweise noch nicht verstanden habe.
Hier mal mein bisheriger Testcode
Spoiler anzeigen
AutoIt
Alles anzeigen#include <FF.au3> Global $sVorname = "TestVorname" Global $sNachname = "TestNachname" Global $sTelefon = "+49123456789" Global $sEMail = $sVorname & "." & $sNachname & "@abc.local" Global $sPasswort = "geheim" _FFStart("https://www.urlvomportal.local/benutzer.htm?method=search") ; Internetseite "Benutzerverwaltung" wird geladen If _FFIsConnected() Then ConsoleWrite("https://www.urlvomportal.local/benutzer.htm?method=search war in " & @extended & " ms geladen" & @CRLF) ; Gibt aus, wie lange die Seite zum Laden gebraucht hat. _FFClick(_FFXPath(".//*[@id='benutzerDatatable_buttons']/div/input")); Klickt auf "Benutzer anlegen" _FFSetValue($sVorname, "vorname", "id") ; schreibt den Vorname in das Feld "Vorname" _FFSetValue($sNachname, "nachname", "id") ; schreibt den Nachname in das Feld "Nachname" _FFSetValue($sTelefon, "telefon", "id") ; schreibt die Telefonnummer in das Feld "Telefon" _FFSetValue($sEMail, "benutzername", "id") ; schreibt die E-Mailadresse in das Feld "Benutzername (E-Mail-Adresse)" _FFSetValue($sPasswort, "neuesPasswort", "id") ; schreibt das Passwort in das Feld "Neues Passwort" _FFSetValue($sPasswort, "neuesPasswortBestaetigung", "id") ; schreibt das Passwort in das Feld "Neues Passwort bestätigen" _FFClick(_FFXPath(".//*[@id='btnBenutzerdatenSpeichern']")); Klickt auf "Speichern"In Zeile 8 wird ja - wenn ich es richtig verstanden habe - gewartet, bis die URL https://www.urlvomportal.local/benutzer.htm?method=search vollständig geladen wurde. Danach erst geht es weiter.
Wenn ich aber in Zeile 9 auf den Button "Benutzer anlegen" klicke, ändert sich meine URL in https://www.urlvomportal.local/benutzer.htm?method=edit&noValidation=true
Ich würde jetzt gerne hier auch "zur Sicherheit" ein _FFIsConnected() einbauen, welches mein Script erst weiter laufen lässt, wenn auch die URL https://www.urlvomportal.local/benutzer.htm?method=edit&noValidation=true komplett geladen ist.Wie mache ich denn sowas?
-
Hallo zusammen,
ich würde mir gerne mit Autoit ein wenig Arbeit ersparen. Aktuell soll ich diverse neue Benutzer in einem Webformular anlegen. Die notwendigen Daten finde ich in einer Exceldatei. Ich könnte jetzt sicherlich sehr unprofessionell mit Tabs und Koordinaten arbeiten, möchte jedoch im Vorfeld im Forum fragen, wie Ihr sowas angehen würdet.
Wenn ich auf der entsprechenden Webseite bin, erwartet mich folgendes:
- Web Schaltfläche "Benutzer anlegen", dann erscheint eine neue Seite mit ...
- Dropdown mit "Herr" oder "Frau" auswählen
- Inputfeld mit Vorname
- Inputfeld mit Nachname
- Inputfeld mit Telefonnummer
- Inputfeld mit Benutzername
- 2 Inputfelder mit Passwort
- Web Schaltfläche "Speichern". Wenn ich das anklicke, komme ich wieder auf die Webseite von Punkt 1.
Da sich so Webseiten ja auch ab und zu mal "Zeit lassen", stellt sich mir natürlilch die Frage, wie ich kontrollieren kann, ob das von mir erwartete Fenster schon da ist, oder ob ich noch warten muss.
Habe mit dem ganzen Webzeugs in Verbindung mit Autoit noch gar keine Erfahrung und bitte euch, mich mal in die richtige Richtung zu schupsen. Vielleicht gibt es ja auch ein Beispielcode, den man als Neuling verstehen kann.
Vielen Dank
C4F
-
Danke für die Hilfe. Ich denke jetzt habe ich ja meine Hausaufgaben vor mir und schließe damit diesen Thread.
-
Guten Morgen,
danke für die Beispiele. Grob konnte ich dem Code folgen. Schreibst Du sowas "locker von der Hand weg" oder optimierst Du im nachhinein?