Beiträge von Muecke
-
-
Hallo miteinander,
wenn ich einen Klick auf einer Webseite mit dem Befehl IELinkClickByTex ausführe möchte ich gerne wissen ob dies auch ausgeführt werden konnte.
Angenommen den Link gibt es nicht auf der Seite dann möchte ich das abfangen. doch wie mache ich das?z.B. der Code hier, den Link gibt es nicht
AutoIt#include <IE.au3> Local $oIE = _IE_Example("basic") _IELinkClickByText($oIE, "Link Existiert nicht")
Wie Prüfe ich das?gruß Mücke
-
OK, dann ist das ja gut, das das Rest mal kein Problem ist, auch wenn ich das Sehr unschön finde.
Dein Ansatz gefällt mir hingegen schon deutlich Besser.
Danke. -
Hallo miteinander,
mit einem HotKeySet Lesen ich ein paar Dinge von einer Webseite und Rufe auch eine neue Seite auf, ganz zum Schluss Prüfe ich ob auf der neuen Webseite was bestimmtes Steht wenn ja dann möchte ich das die Func in der ich ja noch bin gleich noch mal ausgeführt wird. wie macht man so was?
Da ist mein Code:
AutoIt
Alles anzeigen... #include <IE.au3> ... HotKeySet("^{SPACE}", "hotkeyPressed") while WinExists($hIE) sleep(1000) WEnd Func hotkeyPressed() ... Webseite lesen ... Neue Webseite laden .... $sText = _IEBodyReadText ($oIE)$search = "Wen ich auf der Webseite Stehe.." If StringInStr($sText, $search) <> 0 Then MsgBox(0, "Gefunden", "Jetzt muss die Funktion ausgelöst werden") EndFunc
ich habe mir überlegt die IF so umzubauen:
das geht dann auch, jedoch habe ich die Befürchtung das das nur eine Temp Lösung ist denn die Func ist ja noch nicht beendet und wired wider neu aufgerufen, und das könnte ich mir vorstellen ist irgend wann ein Problem? oder Irre ich mich dabei?
Gruß Mücke
-
ja du hast recht, man sollte das Formular Automatisch versenden.
Da jedoch der Shop Betreiber das Automatische Durchsuchen der Seite untersagt, habe ich hier die Klicks noch alle von Hand mit drin.
Damit wird das nicht Automatisch gemacht sondern immer noch von einem Menschen ich hoffe das zumindest.
werde mir den befehl _IEFormElementOptionSelect() genauer anschauen. Danke.
-
OK, das hab eich nicht getestet, bin davon ausgegangen wie beim Imputierend das ich die Eingabe sehen würde.
Es ist tatsächlich hinterlegt. dann hatte das doch schon geklappt ich bin nur zu Kurzsichtig gewesen es zu erkennen.
Danke.
kann man das Feld auch so verändern das es mit drin steht was ausgewählt wurde?
Aber schon mal eine RISSEN DANK, das erleichtert mir unheimlich meine Arbeit.
DANKE.
-
Da ich das Script soweit schon fertig habe, würde ich nur sehr ungern es neu schreiben in dem ich mich in die "winhttp.au3" einlese, was bei einem Neuen Projekt jedoch bestimmt Sinnvoll ist.
Ich bin mir nicht sicher ob ich dir folgen kann.
1. Form Objekt ermitteln
das sollte damit gehen.2. Element Objekt ermitteln
das sollte damit gehen.3. Einen erlaubten Wert für das Element Objekt setzen
das sollte damit gehen.So das ist die Vorgehensweise beim Imputierend, jetzt möchte ich die Select Box Finden.
Das Formular habe ich ja schon gefunden also muss ich das ja nicht mehr suchen.
Dann muss ich jetzt die Box finden.
das würde ich so machen.Und jetzt muss ich das Element setzen.
das würde ich so machen.
Mein vollständiger Code würde also so ausschauen.
AutoIt$oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber") $oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber") _IEFormElementSetValue ($oQuerySuche,"Mein Suchbegriff") $oQuerySuche = _IEFormElementGetObjByName ($oForm, "brandno") _IEFormElementSetValue ($oQuerySuche,"113")
Mein Suchbegriff wird eingetragen, die Select box bleibt einfach unverändert , ich bekomme auch keine Fehlermeldung.
Was habe ich Falsch verstanden?Gruß Mücke
-
Hallo miteinander,
ich möchte ein Formular automatisch ausfüllen lassen, das klappt ach schon sehr gut, doch ein Element in diesem Formular bekomme ich einfach nicht ausgefüllt.
Daher meine Frage ob ihr mir etwas Helfen könnt.Leider ist das Formular in einem B2B Shop bei den man sich zuerst mit einem Passwort einloggen muss somit kann ich euch leider keinen Link zum Formular geben .
Wie ich bisher auf das Formular zugreife:
AutoIt; ********** 7.9) Suchanfrage auf Webseite eintragen ************************** $oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber") ; Innerhalb dieser Webseite gibt es ein Formular - Wir holen uns einen Zeiger auf dieses Formular $oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber") ; Wir holen uns eien Zeiger auf das Such Elemente _IEFormElementSetValue ($oQuerySuche,StringStripWS($aArray_Suche[$i_Suche],3)) ; Wert in das vorgesehende Feld eintragen ""StringStripWS"" Führende und nachfolgende Leerstellen
Die Suchbegriffe kommen aus einer Text Datei.Jetzt habe ich Hinter diesem Feld eine Select Box in die ich gerne einen Wert eintragen möchte, doch ich bekomme das einfach nicht hin
Habe mal einen kleinen teil des Quellcodes der Webseite kopiert hoffe das reicht.
HTML
Alles anzeigen<form id="searchGenericNumber" action="/de/de/wearparts/articledirectsearch/searchType/P" method="get"> <input placeholder="Search Generic ArticleNumber" class="wearpartsGenericNumberInputText" type="text" name="searchGenericArticleNumber" value=""/> <select data-placeholder="Auswahl" style="width:25%; margin-bottom: 25px;" name="brandno" class="chosen-select" id="wearpartsManufacturer" onkeyup=""> <option/> <option value="111">Auswahl 1</option> <option value="112">Auswahl 2</option> <option value="113">Auswahl 3</option> <option value="114">...</option> </select> <input type="submit" class="widget-button wearpartsGenericNumberSearch" value="Suchen" /> </form>
Würde mich Rissig freuen wenn mir jemand dabei Helfen würde das ich Auswahl 3 in die Select Box rein geschrieben bekomme.
gruß Mücke
EDIT: ich mache das ganze im IE ! nicht im FF.
-
ganz genau so was habe ich gesucht. Danke.
-
ich habe auch schon viele Videos gesehen wo das drin ist. Ich habe nur kein Tool gefunden.
Mir würde es auch reichen wenn ich das nachträglich machen könnte.
-
das habe ich.
Kennt ihr ein free progam mit dem ich ein Text in das Video einfügen kann, dann könnte ich die Tastendrucke zu gegebener Zeit nachträglich einfügen.
-
Hallo miteinander,
ich möchte mir die Gedrückten Tasten auf dem Monitor gerne anzeigen lassen.
Warum ich das haben möchte:
ich möchte für meine Kollegen ein Video machen wie man bestimmte Dinge am PC erledigt unter anderem gehören da bestimmte Tastenkürzel mit dazu doch die Siht man natürlich im Video nicht daher würde ich mir werend der Video Aufzeichnung des Monitore die Tastendrücke gerne mit einblenden lassen.
Ich verwende das Tool "Free Screen Recorder".
Hat jemand eine Idee wie man das hin bekommt?
Gruß Mücke
-
OK, dann muss das doch mit rein, und ist nicht Doppelt gemoppelt, das große Problem ist nicht die Bequemlichkeit sonder zu wissen welche Fehler auftreten können um diese dann auch abfangen zu können.
Denn wenn man nicht wies das ein Fehler auftreten kann oder welche Fehler auftreten können dann kann man Sie auch schlecht abfragen
aus dem Grund möchte ich meinen Code so gut wie möglich verstehen und wissen was wie wo passiert und gemacht wird, denn nur dann kann man Fehler finden und abfangen und darauf entsprechend reagieren.Danke für deine Antwort. das ist schon mal gut zu wissen. Danke.
-
alpines: ups. da ist etwas um eine ziele vertuscht. Sorry.
Ja das ist richtig das fileclose() habe ich hier nicht mit dabei da es in der OnAutoItExitRegister("onExit") mit drin stehen habe. Dort schlisse ich alle Dateien die ich geöffnet habe zur Sicherheit noch ein mal.
Ich prüfe doch in Ziele 1 ob die Datei Existiert wenn nicht dann erstelle ich die Datei in Zeile 2 Wenn Sie doch Existiert dann öffne ich die Datei in Zeile 6.
Habe ich dann nicht schon geprüft ob ich alle Berechtigungen etc. habe? und auch ob ich mit der Datei arbeiten kann?
Benötige ich dann den teil Zeile 8 - 11 dann dann wirklich oder ist dies eher Doppelt gerempelt? -
ich habe bei mir im Code = das ich einen Code habe der bei mir auf dem Rechner ist?
eine Datei bei in die ich hinein schreiben. = wie sagt man das denn sonst wenn ich über den Code eine Datei erstelle und in die hinein schreib?
die Datei ist doch dann im Code verankert oder nicht? -
Hallo miteinander,
ich habe bei mir im Code eine Datei bei in die ich hinein schreiben.
wenn die Datei existiert Öffne ich diese so das ich ans Ende Schreiben kann,
wenn die Datei nicht Existiert dann erstelle ich die Datei und Schreibe eine Kopfzeile hinein.Jedoch habe ich immer die zielen 9. bis 12. mit dabei, ich verstehe nur nicht was da eigentlich gemacht wird.
kann mir jemand sagen was da genau gemacht wird und warum ich das in meinen Code drin haben sollte, oder ob das Überflüssig ist.
Gruß Mücke
AutoIt
Alles anzeigenIf Not FileExists($File_Name) then ; Wenn Nihct ExistirtDatei dann $File = FileOpen($File_Name, 2) ; Datei Erstellen und öffnen FileWrite($File, "Datum; Herstellernummer; EAN;" & _ "Lieferantenname; EK; URL"& @CRLF) ; In Neue Datei die Kopfzeile einfügen Else ; Datei hat Existirt dann $File = FileOpen($File_Name, 1) ; Datei Öffnen und an das Ende schreiben EndIf ; Ende der abfrage If $File = -1 Then ; Pfüfen ob die Datei richtig geöffnet wurde MsgBox(0, "Fehler", "Datei kann nicht geöffnet werden.") Exit EndIf
-
He he, auf deinen Bassis habe ich den richtigen Denkanstoß bekommen. und mir ein Test Programm geschrieben.
AutoIt
Alles anzeigen#include <Array.au3> Local $aArray_Suche[11] $i_Suche = 0 ; Kurzzeitgedächnis $aArray_Suche[0] = 10 ; Anzahl der Zeilen in der gelesenen Datei ; Array befüllen For $i_Suche = 1 to $aArray_Suche[0] Step 1 $aArray_Suche[$i_Suche] = "Test "& $i_Suche ; Zeile n Next ; Array nummer 5, 6, 7 Leeren $aArray_Suche[5] = "" $aArray_Suche[6] = "" $aArray_Suche[7] = "" ; Kurzzeitgedächnis zurück setzen $i_Suche = 0 ; Kurzzeitgedächnis For $x = 1 to $aArray_Suche[0] + 10 Step 1 ; Das simulirt mein restliches programm While 1 $i_Suche = $i_Suche + 1 if $i_Suche > $aArray_Suche[0] then MsgBox (64, "ENDE", "$i_Suche ist Größer als das Array") Exit EndIf if $aArray_Suche[$i_Suche] > "" then ExitLoop EndIf ;MsgBox (64, "Inerhalb von DO Until", "$aArray_Suche = " & $aArray_Suche[$i_Suche] & @CRLF & "$i_Suche = " & $i_Suche) WEnd MsgBox (64, "Auserhalb von DO Until", "$aArray_Suche = " & $aArray_Suche[$i_Suche] & @CRLF & "$i_Suche = " & $i_Suche) next ; Das simulirt mein restliches programm
die Zeile 24. habe ich mit drin da mein Programm immer bei einen HotKeySet hier weiter Zählen soll/muss, damit ich das übrige Programm also Simulieren kann habe ich eine Schleife darum gelegt die Größer ist als das Test Array
Danke.
ich glaube zwar das man das noch Kompakter zusammen fassen kann doch das Funktioniert das ist wichtig.
DANKE.
Gruß Mücke
-
Hallo miteinander,
ich habe ein kleines Denk Problem.
ich habe in einer Datei Suchworte stehen (jeweils zeilenweise)
Die Datei lese ich in ein Array ein.Array Ebene 0 = Anzahl der gesamten Zeilen
Array Ebene 1 - ... = Zeilenweise die Suchanfragejetzt möchte ich die Nächste Suchanfrage aufrufen, das mache ich so.
AutoIt.... #include <IE.au3> ; Funkzionen für den Internet Explorer laden#include <Date.au3> ; Funkzionen füs Datum laden#include <file.au3> ; Funkzionen für Dateimenegment .... $File_Suche = "/Suche_Import.txt" $i_Suche = 0 ; kurzzeitgedächtnis Global $aArray_Suche = "" ; Variable für Suchbegriffe Definiren_FileReadToArray(@DesktopDir & $File_Suche, $aArray_Suche) ; Datei für Suchbegrife auslesen .... $i_Suche = $i_Suche + 1 ; Zähler für die zeilennummer um 1 erhöhen if $aArray_Suche[0]< $i_Suche then MsgBox(64, "Hinweis", "Keine Suchergebnisse mehr") Exit ; Array[0] hat die Zeilenanzahl gespeichert EndIf
jetzt habe ich das Problem das eine Zeile auch mal Leer sein kann also würde ich gerne bei einer leeren ziele eine Zeile weiter Springen.
das Würde ich dann so machen.AutoIt$i_Suche = $i_Suche + 1 ; Zähler für die zeilennummer um 1 erhöhen if $aArray_Suche[0]< $i_Suche then MsgBox(64, "Hinweis", "Keine Suchergebnisse mehr") Exit ; Array[0] hat die Zeilenanzahl gespeichert EndIf if $aArray_Suche[$i_Suche] = "" then $i_Suche = $i_Suche + 1 ; Zähler für die zeilennummer um 1 erhöhen EndIf
Das geht jedoch nur dann wenn ich nur eine leer Zeile habe und nicht zwei aufeinander folgend.
Einfach mal 100 If abfragen einzubauen finde ich etwas daneben, und ich muss auch jedes mal drauf achten das die zielen nummre dann nicht zu groß wird bevor ich das Array auslesen möchte sonst bekomme ich einen ErrorWie kann ich es anstellen am besten mit einen Art Loop die Zeilennummer zu erhöhen bis wider Inhalt vorhanden ist oder das Ende erreicht ist wenn das Ende Erreicht ist soll das Programm beendet werden, mit einer kleinen Nachricht.
Gruß Mücke
-
danke Kanashius. das ist perfekt. danke.
so langsam aber sicher wird das richtig genial das Script für mich. ich bin gerade so Heppy DANKE.
-
Ja, das Fenster habe ich bisher nicht beachtet, muss ich wohl öfters drauf schauen, das bringt mich dann etwas weiter
Ja ich möchte im Fehlerfall weiter machen daher frage ich den Fehler ab bzw. schaue ob ein Arrey existiert und wenn nicht gehe ich davon aus das der Wert nicht vorhanden war, und setze dann ein "# NV #" ein, so kann ich die Daten dennoch in die Datei weiter schreiben, und es Stürzt nicht ab
Jetzt ist mir nur aufgefallen das die Methode um die $Herstellernummer und $aEAN leider auch nicht geht sobald es sich nicht nur um zahlen sondern Zahlen und Buchstaben handelt. dann ist das auch leer
am was könnte das liegen?