1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Muecke

Beiträge von Muecke

  • Outlook Personen aufrufen und Felder Aktiviren

    • Muecke
    • 29. März 2017 um 12:02

    OK, das Programm habe ich gefundene, danke.

    ich habe auch das Fadenkreuz genommen und auf den Reiter Personen gehalten, Dabei wurde nicht der Reiter Person sondern das gesamte Menü für die Tabs markiert (ich habe das in Rot dargestellt).

    Bedeutet das ich das Tool nicht verwenden kann?

    Ich muss mal schauen wie man mit der "Control*-Funktionen" arbeitet.

    Dateien

    Unbenannt.PNG 181,79 kB – 0 Downloads
  • Outlook Personen aufrufen und Felder Aktiviren

    • Muecke
    • 29. März 2017 um 11:32

    Was ist denn bitte das "AutoIt Window Info Tool" ?
    Ist das bei der Installation schon dabei gewesen oder muss ich das Runter laden?

    EDIT: habe was gefunden: https://translate.google.de/translate?hl=de&sl=en&u=https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm&prev=search

    mal schauen ob ich was hin bekomme, so was habe ich noch nie gemacht.

    EDIT: Ok, das ist nicht Blöd gemeint doch was mache ich mit den Infos die darin stehen? also in dem "AutoIt Window Info Tool"?

  • Outlook Personen aufrufen und Felder Aktiviren

    • Muecke
    • 29. März 2017 um 11:23

    Hallo miteinander,

    ich habe ein kleines Problem bei dem Ihr mir sicher weiterhelfen könnt.

    ich möchte in meinem Outlook alle Kontakte Öffnen die reihen folge der Telefonnummern ändern und dann Speichern und Schließen.

    Jedoch habe ich keine Ahnung wie ich hier vorgehen muss.

    Ich bin leider kein Programmierer (habe bisher nur eine Webseite ausgelesen und Daten gespeichert mit AutoIT)

    Was ich mir für einen programmabhängig Überlegt habe.

    Code
    1) Outlook Öffnen 
    1.1) Fenster ID merken 
    2) Im Outlook Personen Öffnen
    3) Schleife Kontakt Öffnen
       3.1) Kontakt "N" Öffnen
       3.2) Button Telefonnummer 1 anklicken
       3.3) Reiter "Geschäftlich:" wählen
       3.4) Button Telefonnummer 2 anklicken
       3.5) Reiter "Mobiltelefon:" wählen
       3.6) Button Telefonnummer 3 anklicken
       3.7) Reiter "Privat:" wählen
       3.8) Button Telefonnummer 3 anklicken
       3.9) Reiter "Privat 2:" wählen
       3.10)Kontakt "Speichern & Schließen" 
       3.11) "N" Kontakt weiter Zählen 
    4) AutoIT beenden
    Alles anzeigen


    Was meint Ihr dazu?
    ist das Möglich? und wenn ja wie?


    Damit man wies was ich meine, was ich ändern möchte ich habe ich noch ein Foto beigelegt auf dem das Grafisch sichtbar ist was ich ändern möchte.
    Unbenannt.PNG

    gruß Mücke

  • Daten Aufbereiten

    • Muecke
    • 15. Februar 2017 um 12:13

    hallo miteinander,

    sorry das ich etwas weg war, komme nicht täglich dazu meine Scripte zu pflegen ;-).

    ich bin noch nicht dazu gekommen mir das näher anzuschauen, da ich erst ein mal wissen wollte wie der für mich am unkomplizierteste weg ist so etwas umzusetzen.

    Ich habe zwar Excel jedoch kein Access, und mit SQL kenne ich mich auch gar nicht aus.

    ich werde mich hoffentlich die nächsten tage damit etwas intensiver beschäftigen können, und melde mich dann wider.

    Danke erst mal für eure Hilfe.

    gruß Mücke

  • Daten Aufbereiten

    • Muecke
    • 13. Februar 2017 um 17:01

    was möchte ich machen.

    1. Den Günstigsten preis je Artikel finden
    2. Den Günstigsten preis je Artikel in eine EK Liste eintragen
    3. eine Übersicht aller Lieferanten.

    Wenn ich je ziele eine Artikel nummre habe und die Lieferanten in den Überschriften stehen dann kann ich im Excel mit KKLEINSTE mir den Günstigsten preis suchen lassen.
    und mit einem SVerweis kann ich mir dann den preis in meine EK liste eintragen.

    Das ist der Hintergrund.

    ist das Sortieren und schreiben in ein Array leichter wie in eine Datei?


    ich möchte das Selber machen denn wenn ich irgend wann mehr Daten habe dann möchte ich das Script erweitern können und nicht vor einem Code sitzen denn ich nicht verstehe.

  • Daten Aufbereiten

    • Muecke
    • 13. Februar 2017 um 16:04

    Richtig, das wäre dann so.

    Nicht jeder Lieferant Lieferst alle Artikel.

    Nur wie bereite ich die Daten am besten auf? so das ich am wenigsten Aufwand damit habe? und es Effektiv ist?

    Da ich noch keine Ahnung habe wie ich Daten Sortieren etc. muss ich mich da so oder so einlesen, wollte jedoch nicht Tage lang mit dem Falschen Lösungsansatz herum machen wollen. und dann merken das ein anderer weg effektiver wäre.

  • Daten Aufbereiten

    • Muecke
    • 13. Februar 2017 um 14:17

    Hallo miteinander,

    ich lese auf einer Webseite verschiedene Artikelnummern und deren Lieferanten aus, das ganze Speichere ich dann in eine TXT Datei.
    Die erste Zeile ist die Überschrift und danach kommen die Daten der Webseite.

    Zitat von AutoIT Script

    Datum;Herstellernummer;EAN;Lieferantenname;EK;Hersteller;Produkt;Beschreibung1;URL

    Ich habe in einer Datei wenn ich fertig bin mit auslesen ca. 180.224 Zeilen drin stehen.

    Jedoch habe ich die ein uns die selbe Herstellernummer auch x mal drin stehen mit unterschiedlichen Lieferanten und Preise.

    ich würde meine Neu gewonnene TXT Datei gerne aufbereiten so das jede Artikelnummer nur noch 1 mal drin vorkommt und dahinter dann die Lieferanten und deren preise aufgelistet sind.

    ich mache mal ein Beispiel.

    TXT Datei, alle Zellen sind mit einem Semikolon ";" getrennt!

    Datum Herstellernummer EAN Lieferantenname EK Hersteller Produkt Beschreibung1 URL
    13.02.17 00214 EAN123456789 Muster-Lieferant1 10,00 Hersteller Handy mit Display http://www......de
    13.02.17 00214 EAN123456789 Muster-Lieferant2 10,50 Hersteller Handy mit Display http://www......de
    13.02.17 00214 EAN123456789 Muster-Lieferant3 10,29 Hersteller Handy mit Display http://www......de
    13.02.17 00215 EAN123456789 Muster-Lieferant2 11,29 Hersteller Handy mit Display http://www......de
    13.02.17 00215 EAN123456789 Muster-Lieferant3 11,00 Hersteller Handy mit Display http://www......de
    13.02.17 00215 EAN123456789 Muster-Lieferant1 10,60 Hersteller Handy mit Display http://www......de

    So würde ich sie gerne aufbereiten lassen als CSV Datei

    Herstellernummer Hersteller Produkt Beschreibung1 Muster-Lieferant1 Muster-Lieferant2 Muster-Lieferant3
    00214 Hersteller Handy mit Display 10,00 10,50 10,29
    00215 Hersteller Handy mit Display 10,60 11,29 11,00


    Was ich mir bis jetzt im Kopf überlegt habe.


    1) Alles aus der TXT Datei in ein Array lesen
    2) Das Array_TXT Sortieren nach Lieferantenname
    3) Alle Lieferantenname in ein neues Array schreiben
    4) ARRAY_Lieferantenname alle Duplikate Löschen
    5) Neue CSV Datei erstellen
    6) Kopf in die CSV Datei schreiben
    Herstellernummer; Hersteller, Produkt, Beschreibung1; (Array_Lieferantenname)

    7) Array_TXT Sortiren nach Herstellernummer

    8) zeilenweise lesen

    8.1) ist Herstellernummer Gleich Herstellernummer von Ziele darüber dann ergänze die letzte Zeile in der neuen CSV Datei

    8.1.1) Position des Lieferantenname suchen und den EK wert dort in die Zeile eintragen.

    8.2) ist Herstellernummer nicht Gleich Herstellernummer von Ziele darüber, dann schreibe eine neue Zeile


    Ist meine Vorgehensweise richtig?

    oder mache ich da was zu Kompliziert? und es gibt einen einfacheren Weg?


    Habe auch schon dran gedacht bevor ich in eine Datei schreibe alles in ein neues Array zu schreiben und erst wenn ich fertig bin dann alles in eine Datei zu schreiben.

    Was meint ihr? wie würdet Ihr das machen?


    Wenn das Array fertig ist sollte alles sortiert sein.


    Gruß Mücke

  • StringRegExp Hilfe

    • Muecke
    • 9. Februar 2017 um 18:13

    Oh du bist ein Engel.
    DANKE.

    mein Muster Code sieht nun so aus.

    AutoIt
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    
    
    $String = _
             "<td><strong>Produkt</strong></td>" & @CRLF & @LF & _
             " <td>" & @CRLF & @LF & _
             "  TEST" & @CRLF & @LF & _
             "  für die, Ausgabe" & @CRLF & @LF & _
             " </td>" & @CRLF & @LF & _
             " <tr>" & @CRLF & @LF & _
    		 " <td><strong>Beschreibung1</strong></td>" & @CRLF & @LF & _
    		 "   <td>Test 2, in einer Zeile</td>" & @CRLF & @LF & _
    		 " </tr>"
    
    
    $fProdukt = StringRegExp($String, "(?s)<td><strong>Produkt</strong></td>\s*<td>(.*?)</td>", 3)
    
    
    $fBeschreibung1 = StringRegExp($String, "<td><strong>Beschreibung1</strong></td>\s*<td>(.*)</td>", 3)
    
    
    If IsArray($fProdukt) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fProdukt, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fProdukt = " & $fProdukt)
    EndIf
    
    
    If IsArray($fBeschreibung1) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fBeschreibung1 = " & $fBeschreibung1)
    EndIf
    Alles anzeigen

    Zeile 15 ist die in der ich die Suche habe. danke.

  • StringRegExp Hilfe

    • Muecke
    • 9. Februar 2017 um 16:04

    Hallo miteinander,

    ich verseuche einen Webseite auszulesen, einige Dinge habe ich auch schon hin bekommen, wahrscheinlich mehr Zufall als verstand.

    Leider ist die Seite per Passwort geschützt und ich kann euch keinen Link zur Seite weitergeben.

    daher habe ich hier einen HTML Schnipsel der Seite

    HTML
    <tr>
                    <td><strong>Produkt</strong></td>
                    <td>
                                                XXXXXXXXX
                                            xxxxxxx, XXXXXXXXXXXXXXXX
                    </td>
                </tr>
                <tr>
                    <td><strong>Beschreibung1</strong></td>
                    <td>YYYYYYYYYY, YYYYYYYYYYYY</td>
                </tr>
                                    <tr>
    Alles anzeigen

    ich möchte die XXXXXX und die YYYY auslesen.

    also habe ich folgendes gemacht.

    1. HTML Code lesen

    AutoIt
    $fSource = _IEDocReadHTML($oIE)

    2. Gesuchte Dinge in eine Variable schreiben lassen

    AutoIt
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    $String = _
             "<td><strong>Produkt</strong></td>" & @CRLF & @LF & _
             " <td>" & @CRLF & @LF & _
             "  TEST" & @CRLF & @LF & _
             "  für die, Ausgabe" & @CRLF & @LF & _
             " </td>" & @CRLF & @LF & _
             " <tr>" & @CRLF & @LF & _
    		 " <td><strong>Beschreibung1</strong></td>" & @CRLF & @LF & _
    		 "   <td>Test 2, in einer Zeile</td>" & @CRLF & @LF & _
    		 " </tr>"
    $fProdukt = StringRegExp($String, "<td><strong>Produkt</strong></td>\s*<td>(\d+)</td>", 3)
    $fBeschreibung1 = StringRegExp($String, "<td><strong>Beschreibung1</strong></td>\s*<td>(.*)</td>", 3)
    If IsArray($fProdukt) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fProdukt, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fProdukt = " & $fProdukt)
    EndIf
    If IsArray($fBeschreibung1) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fBeschreibung1 = " & $fBeschreibung1)
    EndIf
    Alles anzeigen

    dann lasse ich mir das ausgeben.

    AutoIt
    If IsArray($fProdukt) Then                              ; Wenn Array dann
    			ConsoleWrite ("$Produkt[0] = " & $fProdukt[0])
    			$Produkt = $fProdukt[0]
    			 _ArrayDisplay ($fProdukt, "Array = $fProdukt")
    		Else							; Wenn kein Array dann
    			ConsoleWrite ("$Produkt = " & $fProdukt)
    			$Produkt = $fProdukt
    		EndIf
    		If IsArray($fBeschreibung1) Then			; Wenn Array dann
    			$Beschreibung1 = $fBeschreibung1[0]
    			ConsoleWrite ("$Beschreibung1[0]) = " & $fBeschreibung1[0])
    			_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
    		Else							; Wenn kein Array dann
    			$Beschreibung1 = $fBeschreibung1
    			ConsoleWrite ("$Beschreibung1 = " & $fBeschreibung1)
    		EndIf
    Alles anzeigen

    Bei Beschreibung1 klappt das beim dem Produkt hingegen nicht.

    ich gehe davon aus das es an den Zeilenumbrüchen liegt.

    Wenn ich in der Info nachlese (StringRegExp.htm) dann kann ich dort folgendes Finden.

    Zitat von autoit.de

    (?s) "." findet alle Zeichen, auch Zeilenumbrüche (als Standard findet "." keine Zeilenumbrüche).


    . Findet jedes einzelne Zeichen (außer Zeilenumbrüche).

    Also habe ich mit dem . dem ? dem * und dem s alle möglichen Kombinationen ausprobiert doch es klappt nichts ;-(.

    Könnte mir da jemand weiterhelfen?

    gruß Mücke


    EDIT: ich habe mir jetzt den teil in ein keinen Code gepackt.

    so kann ich meine Suchkriterien testen ohne immer mein ganzen Code laufen lasen zu müssen.

    jedoch klappt es noch immer nicht.


    AutoIt
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    
    
    $String = _
             "<td><strong>Produkt</strong></td>" & @CRLF & @LF & _
             " <td>" & @CRLF & @LF & _
             "  TEST" & @CRLF & @LF & _
             "  für die, Ausgabe" & @CRLF & @LF & _
             " </td>" & @CRLF & @LF & _
             " <tr>" & @CRLF & @LF & _
    		 " <td><strong>Beschreibung1</strong></td>" & @CRLF & @LF & _
    		 "   <td>Test 2, in einer Zeile</td>" & @CRLF & @LF & _
    		 " </tr>"
    
    
    $fProdukt = StringRegExp($String, "<td><strong>Produkt</strong></td>\s*<td>(\d+)</td>", 3)
    
    
    $fBeschreibung1 = StringRegExp($String, "<td><strong>Beschreibung1</strong></td>\s*<td>(.*)</td>", 3)
    
    
    If IsArray($fProdukt) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fProdukt, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fProdukt = " & $fProdukt)
    EndIf
    
    
    If IsArray($fBeschreibung1) Then                                ; Wenn Array dann
    	_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
    Else	                                                        ; Wenn kein Array dann
    	MsgBox (0, "Kein Array !", "$fBeschreibung1 = " & $fBeschreibung1)
    EndIf
    Alles anzeigen


    ich möchte mir das TEST für die, Ausgabe ausgeben lassen am besten sogar in einer Zeile Ohne den Zeilenumbruch, wobei ich für den Anfang mit irgend einem Ergebnis schon zufrieden wäre.

    was mache ich in Zeile 15

    1. ich such die Übereinstimmung "<td><strong>Produkt</strong></td>"
    2. dann sage ich das alle zeichne folgen können auch Zeilenumbrüche und Sonderzeichen ausgeschaltet "\s*"
    3. ich suche die Übereinstimmung "<td>"

    4. jetzt kommt die Suche dich ich ausgeben möchte, da müsste dann drin stehen, alle Zeichen auch Zeilenumbrüche und Sonderzeichen ausschalten

    5. ich suche die Übereinstimmung "</td>"


    ich habe den Eindruck das Punkt 4 bei mir nicht richtig ist.

    Arrrrr..... warum will das nicht in meinen Schädel rein wie das geht.

    Gruß Mücke

  • Browserfenster überwachen in einer DO .... Until​ einbauen

    • Muecke
    • 3. Februar 2017 um 17:47

    @alpines Oh du hast recht, da habe ich mich verdrückt.

    Kann man das Thema irgend wie verschieben?
    wahrscheinlich kann ich deshalb auch das Thema nicht als erledigt Markieren?

    gruß Mücke

  • Browserfenster überwachen in einer DO .... Until​ einbauen

    • Muecke
    • 3. Februar 2017 um 14:34

    Du hast recht, eigentlich kenne ich den Befehl NOT zumindest habe ich den schon das ein oder andere mal verwendet.

    Jedoch muss ich auch gestehen das ich kein Programmierer bin, und nur sehr Selten was Programmire und das dann auch immer sehr viel zeit in Anspruch nimmt da ich mich überall einlesen muss.
    Da ich das Wissen dann Punktuell anwende und nicht Öffners in folge vergesse ich das auch immer wider :(

    und so kommt es dann vor das ich das ! ich glaube aus dem PHP noch im Kopf habe.

    zuerst wollte ich ja etwas mit einer <> schreiben doch dann hätte ich was dagegen Stellen müssen, wusste aber nicht was.

  • Browserfenster überwachen in einer DO .... Until​ einbauen

    • Muecke
    • 3. Februar 2017 um 14:15

    Hallo Autoiter,

    Das ich den Abbruch in der Else drin stehen habe, hast du aber schon gesehen?
    Ich finde das nur nicht so schön gelöst.

    Oh das NOT habe ich gesucht danke.
    ich habe immer ein ! geschrieben und das gab einen Fehler. ;(

    Danke.

    Oh das ist gut das man die Until erweitern kann. das klappt perfekt.


    DANKE.


    gruß Mücke


    EDIT: Warum kann ich das Thema nicht als Erledigt markieren?

  • Browserfenster überwachen in einer DO .... Until​ einbauen

    • Muecke
    • 3. Februar 2017 um 08:22

    Hallo miteinander,

    ich möchte ein von mir geöffnetes Browserfenster überwachen ob es geschlossen wurde, wenn es geschlossen wurde soll das Script beendet werden.

    ich habe schon eine DO ... Until schleife in der mein Programm ausgeführt wird.

    Diese sieht so aus.

    AutoIt
    do
    $iSuche = $iSuche + 1
    
    
    	$Suchbegriff = StringStripWS($gArray_Suche[$iSuche], 3)
    	if $Suchbegriff <> "" Then
    		_WebseiteSucheLaden($URL_Suche)
    		_WebseiteSucheEintragen($Suchbegriff, $Hersteller_ID)
    		$Flag = _WebseiteSucheAuswerten($Suchbegriff)
    		_WebseiteArtikelLesen_Schreiben($Flag, $Suchbegriff, $URL_Artikel, $Dateiname_Ergebnis)
    	Endif
    
    
     Until UBound($gArray_Suche)-1 <= $iSuche
    Alles anzeigen


    Jetzt dachte ich mir das ich das Browserfenster noch mit abfragen sollte, also habe ich mir eine IF abfrage dafür gebaut.

    AutoIt
    If WinExists($hIE) Then
    			 MsgBox (0,"Gut", "Browser fenster ist offen", 10)
    		Else
    			 MsgBox (0,"onExit", "Browser fenster ist Geschloßen", 10)
    			 Exit
    		EndIf


    ich würde das aber Lieber in die Until Bedingung mit aufnehmen.

    jedoch habe ich nicht so richtig verstanden wie ich das machen muss. :(

    Bei der IF sieht man ja das ich ein WAHR bekomme wenn das Browser Fenster Existiert, was dann wiederum zum Abbruch führt.

    Also muss ich das Ergebnis umdrehen doch wie macht man das?

    Ich hoffe das ihr versteht was ich meine, und mir etwas weiter helfen könnt.


    Gruß Mücke

  • Richtig Prüfen ob ein Formular auf der webseite existirt

    • Muecke
    • 16. Dezember 2016 um 09:25

    ja genau so was habe ich gesucht, danke.


    habe das in einem Kleinen Beispiel gerade mal getestet.


    AutoIt
    ; Prüfen ob das Formular auf der Webseite Existirt, oder nicht.
    ; mit der Google Seite sollte es klappen ;-)
    ; mit der AutoIT Seite sollte es nicht klappen.
    #include <IE.au3> ; Funkzionen für den Internet Explorer laden
    ; Webseite Laden
     ;$oIE = _IECreate("www.Google.de")   ; Öffnet den Internet Explorer
     $oIE = _IECreate("www.autoit.de")    ; Öffnet den Internet Explorer
     _IELoadWait($oIE,0)                  ; Warten bis die Webseite vollständig geladen ist
    ; Formular
     $oForm = _IEFormGetObjByName ($oIE, "f")				 ; Zeiger auf Suchformular
      $oQuerySuche = _IEFormElementGetObjByName ($oForm, "q"); Zeiger auf Sucheingabe
      _IEFormElementSetValue ($oQuerySuche,"Das ist Toll")	 ; Sucheingabe eintragen
    If Not IsObj($oForm) Then
    	MsgBox(0, "FEHLER", "$oForm ist kein Objekt.")
    Else
    	MsgBox(0, "ERFOLG", "Objekt $oForm erfolgreich erstellt.")
    EndIf
    Alles anzeigen

    DANKE.

  • Richtig Prüfen ob ein Formular auf der webseite existirt

    • Muecke
    • 16. Dezember 2016 um 08:53

    ja es ist ein Online Formular, sprich eine Webseite.

    Wie Prüfst du denn ob die richtige Webseite geladen wurde?

    Das mit dem HTML Code ist leider etwas schwierig, denn es ist ein B2B Shop der mit einer Registrierung versehen ist.

    Ich möchte Prüfen ob die Elemente ich die in meinen Code ausfülle überhaupt vorhanden sind, denn wenn die nicht da sind dann kann ich davon ausgehen das ich auf der Falschen Seite mich befinde.

  • Richtig Prüfen ob ein Formular auf der webseite existirt

    • Muecke
    • 15. Dezember 2016 um 14:08

    Hallo Miteinander,
    ich möchte mir eine Funktion schreiben die mir ein Formular auf der Webseite ausfüllt, jedoch möchte ich vorab prüfen ob das Formular überhaupt existiert. Und damit habe ich meine Probleme.


    Website ist aufgerufen und ich kann auch alle Daten ins Formular eintragen. mit dem Code hier:


    AutoIt
    _IENavigate($oIE,$fURL)                                                    ; Öffnen der Suchseite
    $oForm = _IEFormGetObjByName ($oIE, "Suche")                               ; Zeiger auf Suchformular
     $oQuerySuche = _IEFormElementGetObjByName ($oForm, "ArticleNumber")       ; Zeiger auf Sucheingabe
     _IEFormElementSetValue ($oQuerySuche,$Suchbegriff)                        ; Sucheingabe eintragen
     $oQuerySuche = _IEFormElementGetObjByName ($oForm, "Hersteller")          ; Zeiger auf Sucheingabe Select
     _IEFormElementSetValue ($oQuerySuche,$Hersteller_ID)                      ; Sucheingabe Selecht eintragen
     _IEFormSubmit($oForm)                                                     ; Formular absenden

    ich dachte mir das ich jetzt das $oForm abfragen kann, und daraus dann schlissen kann ob das Formular da ist oder nicht, jedoch ist ist da immer eine "1" hinterlegt :( egal auf welcher Webseite ich mich befinde.

    um zu schauen was dort hinterlegt ist habe ich es so gemacht

    AutoIt
    MsgBox(0,"",$oForm)


    Ich habe den Eindruck das ich das nicht richtig verstanden habe, Könnte mir hier jemand weiterhelfen?

    Gruß Mücke

  • StringRegExp Richtig suchen

    • Muecke
    • 15. Dezember 2016 um 11:20

    ja genau richtig.

    ich möchte den Herstellernamen auslesen.
    Die Herstellernummer Habe ich ja schon ;-).

    ich habe eine Lösung gefunden.
    der Code sieht nun so aus.


    AutoIt
    $aHersteller       = StringRegExp($sSource, "<td><strong>Hersteller</strong></td>\s*<td id=""manufacturerName"">(.*)</td>", 3)                ; Aktuelle Hersteller lesen

    ich habe das (?s) durch \s* ersetzt. ab dann habe ich wider Ergebnisse bekommen. :)
    habe dann noch den Restlichen Fixen Text angepasst und bekomme nun den Hersteller in einem Array ausgegeben.


    Gruß Mücke

  • StringRegExp Richtig suchen

    • Muecke
    • 15. Dezember 2016 um 10:26

    hallo miteinander,

    ich mache jetzt schon etwas länger damit herum und ich verstehe es immer noch nicht, wie man damit richtig sucht und findet.

    Das ist mein Code:

    AutoIt
    ...    
    $sSource           = _IEDocReadHTML($oIE)
    $aHerstellernummer = StringRegExp($sSource, "(?s)<td><strong>Herstellernummer</strong></td>\s*<td>(.*?)</td>", 3)    ; Aktuelle Herstellernummer lesen
        ....

    Das ist der HTML Code dazu:

    HTML
    <td><strong>Herstellernummer</strong></td> <td>0815654</td>


    Jetzt möchte ich noch den Hersteller auslesen:
    Das ist der HTML Code zum Hersteller:

    HTML
    <td><strong>Hersteller</strong></td>
                                    <td id="manufacturerName">HieristderHerstellername</td>

    also habe ich versuche eine neue Codezeile zu erstellen die mir den Hersteller zurück gibt, ich bekomme aber immer nur das Ergebnis "1" zurück :(
    Wie sieht mein bisheriger Code aus:

    AutoIt
    $sSource     = _IEDocReadHTML($oIE)$aHerstellernummer = StringRegExp($sSource, "(?s)<td><strong>Herstellernummer</strong></td>\s*<td>(.*?)</td>", 3)    ; Aktuelle Herstellernummer lesen
    $aHersteller = StringRegExp($sSource, "<td><strong>Hersteller</strong></td>(?s)<td(.*+)</td>", 3)              ; Aktuelle Hersteller lesen
    if IsArray($aHersteller) Then    _ArrayDisplay($aHersteller)Else    echo ("Kein Array ;-( = " & $aHersteller)endif ;==> IsArray

    Zeile 2: das (?s) habe ich dort stehen (findet alle Zeichen, auch Zeilenumbrüche)
    Zeile2: (.*+)

    . = Findet jedes einzelne Zeichen (außer Zeilenumbrüche).

    * = Wiederholt die bisherigen Zeichen, Sets oder Gruppen kein oder mehrmals. Äquivalent zu {0,}
    + = Wiederholt die bisherigen Zeichen, Sets oder Gruppen mindestens einmal. Äquivalent zu {1,}

    ich bekomme jedoch immer als Ergebnis kein Array und 1.

    Wie muss ich denn richtig suchen? das ich den Hersteller ausgegeben bekomme?

    ps. das Echo ist eine Func die eine MSGBox aufruft.

    gruß Mücke

  • Zeiger auf Tabelle bekommen, wie

    • Muecke
    • 14. Dezember 2016 um 15:49

    ich habe eine Lösung gefunden, auch wenn ich nicht glaube das das die Saubere Lösung ist die man erstellen sollte, jedoch ist mir kein anderer Weg eingefallen, ich kenne keinen anderen :(


    AutoIt
    Func _Artikel_Aufrufen ()
    
    
    local $Finden_Teil1		; Kurzzeitgedächtnis
    local $Finden_Teil2     ; Kurzzeitgedächtnis
    local $sText            ; Kurzzeitgedächtnis
    local $search   = "Der Herstellerfilter wurde"
    local $search_2 = "Keine Artikel gefunden"
    
    
    
    
        $sText  = _IEBodyReadHtml($oIE)				; Webseiten Queltext einlesen 
    
    
    ; Fehler abfrage // Prüfen ob Fehlermeldung auf der Webseite stehen.
    	If (StringInStr($sText, $search) <> 0) or (StringInStr($sText, $search_2) <> 0) Then
    		MsgBox (0, "", "Fehler in der Artikelsuche")
    	EndIf
    
    
    ; Richtigen Artikel aus der Auflistung suchen 
    	$Finden_Teil1 = _StringBetween($sText,'data-id="' & $Suche,'</a')
        $Finden_Teil2 = _StringBetween($Finden_Teil1[0], '<a href="', '">')
    
    
    ; Prüfen ob Artikel in der Auflistung vorhanden ist 
    	if IsArray($Finden_Teil2) then
    		MsgBox(0,"", "Array existirt")
    	Else
    		MsgBox(0,"", "Array existirt nicht")
    	Endif
    ; Artikel Link aufrufen im Webbrowser 
    	_IENavigate($oIE, "https://www.xxxxxxxxxxxxx.com" & $Finden_Teil2[0])	; URL Öffnen
    	_IELoadWait($oIE,0)                                             ; Warten bis die Webseite vollständig geladen ist
    
    
    EndFunc ;==>_Artikel_Aufrufen
    Alles anzeigen

    Was passiert hier.
    Die Webseite ist geöffnet und ich habe eine Tabelle mit verschiedenen Artikel vor mir.

    Als erstes prüfe ich ob eine Fehlermeldung auf der Webseite Steht, wenn ja, muss ich noch einen Abbruch schreiben.
    Dann Suche ich aus der Tabelle den teil der meinen Suchbegriff hat und schreibe den in ein Array, das Array durchsuche ich dann nach dem Link den ich dann wiederum in ein neues Array schreibe, das ich dann dazu verwende den Artikel im Browser per Link aufzurufen.

    leider habe ich keinen Plan wie ich einen Klick an der Stelle realisieren kann soll muss, daher mache ich das so. Es Funktioniert :) das ist mir wichtig.
    Wenn natürlich jemand eine Schnellere elegantere oder bessere Möglichkeit hat, ich bin ganz Offen für einen anderen Weg ;) auch wenn das Thema auf Erledigt steht.


    Gruß Mücke

  • Zeiger auf Tabelle bekommen, wie

    • Muecke
    • 14. Dezember 2016 um 13:56

    Hallo miteinander,

    das Ergebnis einer Suche auf einer Webseite wird mir in einer Tabelle angezeigt.


    Jedes <tr...> hat eine "data-ID" mit der Artikelnummer des Produktes das es Anzeigt.
    in jeder <tr...> ist dann ein <td class="resultLink"> und dort ist dann ein Link den würde ich gerne anklicken.

    Da der Link jedoch ein Dynamischer Link ist, kann ich denn schlecht suchen und ich komme nicht drauf wie ich es schaffe den Richtigen Link zu betätigen.

    Ich dachte jetzt das ich auf das <tr...> Element ein Zeiger setzen könnte und dann den Link auslösen könnte, doch ich wies nicht weiter denn ich wies auch nicht wie ich einen Zeiger auf die Tabelle bekomme.

    Ich habe hier den HTML Code der eins der Produkte anzeigt.

    HTML
    <tr class="sing-search-result sing-row" data-name="IRONIE" data-id="Artikelnummer" data-price="33" data-brand="102">
    	<td class="resultLink">
            <a href="Dynamischer Link">
             .... weitere tabellen & Links .... 
            </a>
        </td>
    </tr>

    Anstelle der Artikelnummer muss der Suchbegriff dort stehen.

    Anstelle href="Dynamischer Link" steht dort der Dynamische Link.

    leider kann ich eich keinen link zur gesagten Seite geben da es ein B2B Shop ist und dieser eine Registrierung voraussetzt. Sorry.


    Wenn Ihr mir weiter helfen Könntet wie ich den Richtigen Link kauf der Seite finde, wäre ich euch sehr verbunden.

    gruß Mücke

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™