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. Mojo

Beiträge von Mojo

  • If Anweisung _IEPropertyGet?

    • Mojo
    • 6. Mai 2015 um 14:44

    Auf dem Standpunkt bin ich auch aber wie gebe ich meiner Anweisung denn den Suchauftrag im Titel zu suchen?

  • If Anweisung _IEPropertyGet?

    • Mojo
    • 6. Mai 2015 um 14:29

    Derzeit habe ich das folgende Problem in meinem Skript:
    Nach dem Routing erfolgt der Login. Sollte niemand eingeloggt gewesen sein, läuft das Skript vernünftig durch aber wenn noch ein User angemeldet war, muss diese Session erst beendet werden.

    Diesen Fall versuche ich nun irgendwie abzugreifen und das läuft doch am Besten mit If-Then-Else?!

    Da sich beide Fälle durch den Titel unterscheiden lassen, ist es doch der beste Weg über diesen den Weg zu gehen?!

    Muss sich ausgeloggt werden, steht "Überprüfung" im Titel, wenn der Login funktioniert hat, steht "Benutzerkontrollzentrum" im Titel.

    If (im Titel Überprüfung) Then
    (muss ein Mouseclick auf den Weiter Button erfolgen) Else
    (soll das Skript einfach mit der nächsten Funktion weiterlaufen)

  • If Anweisung _IEPropertyGet?

    • Mojo
    • 6. Mai 2015 um 14:03

    Nein, natürlich nicht

  • If Anweisung _IEPropertyGet?

    • Mojo
    • 6. Mai 2015 um 13:49

    Hallo zusammen,

    für mein Skript benötige ich noch eine If-Anweisung um zu sehen ob eine Anmeldung möglich ist oder zuerst eine Abmeldung erfolgen muss.
    Gerne würde ich mit _IEPropertyget und mit Hilfe des Seitentitel arbeiten.
    Wenn eine Abmeldung durch das Skript erfolgen muss, wird man darauf hingewiesen das der Benutzer XY noch angemeldet ist. In dem Fall muss die Session angeklickt und mit einem Button die Abmeldung bestätigt werden. Der Seitentitel beinhaltet das Wort Überprüfung.
    Wenn keine Abmeldung erforderlich ist, soll das Skript einfach normal weiterlaufen.

    Da ich nicht der größte Entwickler bin, muss ich mal wieder auf das Forum zurückgreifen und hoffe bei euch Hilfe zu finden.

    [autoit]

    Local $loginPageTitle = _IEPropertyGet ($oIE,"title")
    Local $loginResult = StringInStr ( $loginPageTitle, "Überprüfung")

    [/autoit][autoit][/autoit][autoit]

    If _IEPropertyGet ($loginResult) Then
    MouseClick("left",1007,545)
    Else @error

    [/autoit]

    Der Code ist wahrscheinlich von Anfang bis Ende unbrauchbar...

    Vielen Dank für Eure Hilfe!

  • TimeDiff soll Dauer ausgeben

    • Mojo
    • 30. April 2015 um 12:12

    Die Funktion entspricht doch einem FrontEnd-Test, oder?
    Idealerweise hätte ich auch gerne noch einen BackEnd-Test. Ist das realisierbar mit AutoIT?

    EDIT: Die Funktion ergibt die Summe aus Front- und Backend! -> Entschuldigt die Frage...

  • TimeDiff soll Dauer ausgeben

    • Mojo
    • 29. April 2015 um 14:51

    Super! Genau sowas meinte ich. Allerdings habe ich drei Funktionen mit verschiedenen MgsBoxen. Demnach benötige ich nur zwei weitere globale Variablen, oder?

  • TimeDiff soll Dauer ausgeben

    • Mojo
    • 29. April 2015 um 14:31

    Kann ich mir die Zeit, die ich mir momentan in der MsgBox ausgeben lasse auch als Variable speichern, sodass ich diese später in einer txt-datei ausgeben lassen kann?

    Im nächsten Schritt möchte ich nämlich die MsgBox ersetzen.

  • TimeDiff soll Dauer ausgeben

    • Mojo
    • 29. April 2015 um 13:58

    Ich danke Euch vielmals!
    Solch dumme Fehler...

  • TimeDiff soll Dauer ausgeben

    • Mojo
    • 29. April 2015 um 13:26

    Hallo zusammen,

    dies ist meine TimeDiff-Funktion:

    [autoit]


    Do
    Local $hTimer = TimerInit()
    sleep(1000)
    $logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    Until @error = 0
    Local $fDiff = Round(TimerDiff($hTimer)/100, 2)
    MsgBox($MB_SYSTEMMODAL, "Time Difference", $fDiff & " s")
    EndFunc

    [/autoit]

    Sie läuft nach einer Eingabemaske, die durch ein Button abgefeuert wird. Da danach Datenbankzugriffe erfolgen, dauert der Aufbau der nachfolgenden Seite einige Zeit. Aus dem Grund soll mein TimeDiff nach abfeuern des Buttons starten und so lang laufen bis der angegebene Pixel gefunden wurde. Die verstrichene Zeit soll er mir dann in der MsgBox ausgeben.

    Läuft auch tadellos aber da er mir fast immer die selbe Zeit anzeigt obwohl er manchmal länger braucht, glaube ich, das der Code Fehler hat.

  • Link aus der Navigationbar ansprechen

    • Mojo
    • 8. April 2015 um 13:43

    In der WorkframeArea2 befinden sich noch mehrere Links.
    Wahrscheinlich komme ich über den _stringbetween/stringsplit am einfachsten ran?!
    Leider kenne ich mich mit Frames nicht aus und habe keine genaue Vorstellung wie ich es handhabe erst den Frame aufzurufen und dann nach dem String zu suchen.
    Muss mein Code einfach um _stringbetween/stringsplit editiert werden oder wie kann ich mir das vorstellen?

    Vielen Dank für Eure Hilfe!

  • Link aus der Navigationbar ansprechen

    • Mojo
    • 8. April 2015 um 12:31

    Niemand eine Idee?

  • Link aus der Navigationbar ansprechen

    • Mojo
    • 7. April 2015 um 14:00

    Erstmal vielen Dank für die Antwort.
    Kam bisher leider nicht dazu weiter zu testen.

    Wie gehe ich denn am Besten vor um mich durch die Frames zu navigieren?

    Habe jetzt erst einmal versucht mir die FrameCollection auszugeben:

    [autoit]


    Func frameAusgabe ()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $oFrames = _IEFrameGetCollection($oIE)
    Local $iNumFrames = @extended
    Local $sTxt = $iNumFrames & " frames found" & @CRLF & @CRLF
    Local $oFrame = 0
    For $i = 0 To ($iNumFrames - 1)
    $oFrame = _IEFrameGetCollection($oIE, $i)
    $sTxt &= _IEPropertyGet($oFrame, "innerhtml") & @CRLF
    Next
    MsgBox($MB_SYSTEMMODAL, "Frames Info", $sTxt)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]

    Die MsgBox zeigt mir nun an das der Seite folgender Frame unterliegt:

    Unbenannt.PNG

    Der benötigte Link sollte sich im "WorkAreaFrame2" befinden. Mir fehlt jetzt gerade aber die weitere Herangehensweise. Vom Verständnis sollte ich doch nun irgendwie in den "WorkAreaFrame2" navigieren und mir dort die LinkCollection ausgeben lassen um so den benötigten Link für die Ligatore zu erhalten, oder?

  • Link aus der Navigationbar ansprechen

    • Mojo
    • 12. März 2015 um 15:21

    Die Seite ist zwar kein Geheimnis aber leider nicht extern abrufbar.
    Gerne schicke ich aber noch mehr Quellcode, damit du dir das mal anschauen kannst. IFrames sind nicht meine liebsten Begleiter...

    Ich versuche dir aber mal die einzelnen Elemente wiederzugeben:

    Code
    html -> body -> div#UIHostArea -> div#UIHostFrameContainer -> iframe#ApplicationFrame -> html -> frameset -> frameset#contentFrameset -> frame#WorkAreaFrame1 -> html -> body -> form#myFormId -> div#rootAreaDiv.th-ajax-area -> div#c1_w1_v2 -> table -> tbody -> tr -> td -> table -> tbody -> tr -> ->td#th_l_navcontainer.th_l_navcontainer.th-l-navcontainer -> div#c1_w1_v2_thescroll.th-sc-top -> div#c1_w1_v2_thescroll_scbox.th-sc-container -> div#C1_W1_V2_thescroll_sccontent -> div#C1_W1_V2_$navbar.th-ajax-area -> div#c4_w16_v17 -> div#c1_w1_v2_c4_w16_v17_mainNavigation -> ul#c4_w16_v17_meinmenu-th-menu2 -> li.th-menu2-sub-item ->a#c4_w16_v17_srv_ord.th-lk

    Bringt dir das was?

  • Link aus der Navigationbar ansprechen

    • Mojo
    • 12. März 2015 um 14:24

    Stehe ich jetzt völlig auf der Leitung oder mache ich was falsch?

    @ 4ern
    ich hatte ja bereits versucht mit _IEGetObjById zu arbeiten.
    Den versuchten Code hätte ich ja auch in den thread schreiben können ||

    Da dies nicht funktionierte, habe ich dann versucht mit der Funktion _IEGetObjByName zu arbeiten, also:

    Code
    $oLink = _IEGetObjByName($oIE, 'Ligatore')
    _IEAction($oLink, 'click')


    Hat aber auch nicht fuinktioniert

    Mache ich da was falsch? Das Object wird doch mit _IEGetObjByName bzw. _IEGetObjByID eingelesen, oder habe ich da ein falsches Verständnis?

    Um meinen weiteren Versuch zu berücksichtigen, hier mein erster Versuch:

    Code
    Func LigatoreEinsehen ()
    Local $sMyString = "Ligatore"
    Local $oLinks = _IELinkGetCollection($oIE)
    For $oLink In $oLinks
        Local $sLinkText = _IEPropertyGet($oLink, "innerText")
        If StringInStr($sLinkText, $sMyString) Then
            _IEAction($oLink, "click")
            ExitLoop
         EndIf
      Next
    
    
    EndFunc
    Alles anzeigen
  • Link aus der Navigationbar ansprechen

    • Mojo
    • 12. März 2015 um 13:52

    Hallo zusammen,

    nachdem ich mir jetzt den halben Tag mit Testen versaut habe und ergebnislos bin, erhoffe ich mir von Euch mal wieder Unterstützung.
    Folgenden Punkt möchte ich per Klick öffnen:

    Code
    <a id="C4_W16_V17_SRV-ORD" class="th-lk" href="javascript:void(0)" onclick="htmlbSubmitLib('htmlb',this,'thtmlb:link:click:0','myFormId','C4_W16_V17_SRV-ORD','SRV\x2dORD\x2dWC',0);return false" title="Ligatore" onfocus="thSaveKbFocus(this);" oncontextmenu="return false;">Ligatore</a>


    Mit _IELinkGetCollection und der Suche nach dem innerText bin ich erfolglos geblieben. Auch mit _IEClickByName oder ID bin ich erfolglos geblieben. Wahrscheinlich ist es total simpel aber ich komme nicht auf den richtigen Ansatz.

    Hat jemand eine Idee?

    Vielen Dank!

  • Sleep durch Schleife ersetzen

    • Mojo
    • 12. März 2015 um 13:41

    Vielen Dank!

  • Sleep durch Schleife ersetzen

    • Mojo
    • 3. März 2015 um 13:20

    Hallo zusammen,

    für eine meiner Websites schreibe ich gerade einen Test. Besonders wichtig ist mir die Durchlaufzeit des Tests. Derzeit arbeite ich noch mit einem Sleep, welches die Durchlaufzeit künstlich steigert. Leider habe ich noch keine Vorstellung wie ich meine Funktion umbauen kann, deswegen benötige ich Hilfe.

    [autoit]

    Func roleLogin ()
    Local $sMyString = "Admin"
    Local $oLinks = _IELinkGetCollection($oIE)
    For $oLink In $oLinks
    Local $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    Sleep (10000)
    Local $loginPageTitle = _IEPropertyGet($oIE,"title")
    Local $searchFound = (StringInStr ( $loginPageTitle, "Center"))
    If $searchFound > 0 Then
    $statusCheck = 1
    $result = $result & 'Search: OK, '
    Else
    $statusLogin = 0
    $result = $result & 'Search: ERROR, '
    EndIf

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]

    Das Problem ist folgendes:
    Nachdem ich meine Login-Daten eingegeben habe und den Button betätige, läuft eine Statusseite die mich verbindet (Daraus resultiert der Sleep). Erst dann kommt die eigentlich Seite, auf der ich die Titelabfrage "Center" mache.

    Mein Ziel ist es nun den Sleep durch eine Schleife auszutauschen, weiß aber leider noch nicht wie. Am besten wäre, glaube ich, eine Schleife, die sich permanent aufrugt, solange sie den Titel "Center" nicht aufrufen kann?! Kann mir jemand nützliche Tipps geben?

    Vielen Dank!

  • Befehle per Remote-Zugriff steuern.

    • Mojo
    • 21. Oktober 2014 um 12:22

    Vielen Dank für eure Antworten.
    Im Grunde muss ich auf der RDP garkeine Daten bearbeiten, sondern lediglich einzelne Rows abfangen und in einer Textdatei speichern.
    Ändert aber nichts daran, dass es unmöglich ist mit AutoIT eine RDP (MSTSC) - Sitzung zu steuern, oder?

    Dann werde ich mal über Alternativen nachdenken und bedanke mich für eure Hilfe!

  • Befehle per Remote-Zugriff steuern.

    • Mojo
    • 16. Oktober 2014 um 14:57

    Hallo zusammen,

    derzeit arbeite ich an einem automatischen Check, der eine Remote Desktopverbindung aufbaut und anschließend Excel öffnen, verschiedene Befehle ausführen, eine Excel-Datei generieren, abspeichern und die Session später wieder beenden soll.

    Ist es mit Auto IT möglich die RDP-Session zu kontrollieren?
    Bisher habe ich noch keinen guten Ansatz gefunden. Könnt ihr mir weiterhelfen?

    Habe mich im WWW zwar schon umgesehen und einige Ansätze gefunden, wie ControlSend und WinActivate aber entweder es funktioniert nicht oder es liegt an mir.

    vielen Dank und liebe Grüße!

  • Link im Frame ansprechen und Klick-Event auslösen

    • Mojo
    • 24. September 2014 um 14:26

    Das einfache Navigieren funktioniert meiner Ansicht nach nicht wegen der wechselnden URL für jede Sitzung.

    [autoit]

    _IENavigate($oIE,"javascript:return RadPanelbar1.onClick(8);")

    [/autoit]


    wird garnicht erst angenommen.

    [autoit]

    _IENavigate($oIE,"Module/Report/Report.aspx")

    [/autoit]


    funktioniert nur so lange bis einer Sitzung eine neue ID zugewiesen wird.


    Wie im Screenshot zu sehen, setzt sich die URL ja großteils aus der Sitzungs-ID zusammen, die zu jeder Sitzung wechselt und aus dem Grund nicht mit eineme IENavigate navigiert werden kann?!

    Wie gesagt, leider bin ich ein blutiger Anfänger und versuche aus den Resultaten meines jetzigen Checks schlau zu werden. Vielleicht liegt der Fehler auch ganz woanders aber ich bin echt ratlos :(

    Ich schicke mal meinen bisherigen Code:

    [autoit]

    Func login ()
    _IENavigate ($oIE, "http://gator/login.aspx")
    _IELoadWait($oIE)
    Local $username = _IEGetObjByName ($oIE,"uiFldUsername")
    Local $password = _IEGetObjByName ($oIE,"uiFldPassword")
    Local $login_button = _IEGetObjByName ($oIE,"uiBtnLogin")
    _IEFormElementSetValue ($username, "username")
    _IEFormElementSetValue ($password, "password")
    _IEAction ($login_button, "click")
    _IELoadWait($oIE)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $loginPageTitle = _IEPropertyGet ($oIE,"title")
    Local $loginResult = StringInStr ( $loginPageTitle , 'Gator WebServices')
    If $loginResult > 0 Then
    $statusLogin = 1
    $result = $result & 'Login: OK, '
    Else
    $statusLogin = 0
    $result = $result & 'Login: ERROR, '
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func showJournal ()
    _IENavigate($oIE,"gator/zwf/Module/Report/Report.aspx")
    EndFunc

    [/autoit]


    EDIT: Nachdem ich nun nochmal die Funktion _IEFrameGetCollection genötigt habe um den Namen des Frames herauszufinden, kann ich doch nun den Frame mit dem Befehl

    [autoit]

    $oFrameMenu = _IEFrameGetObjByName($oIE, "Menu")

    [/autoit]

    aufrufen und anschließend mit _IELinkClickByName nach " &nbsp;Monatsjournale" suchen und den Click mit IEAction auslösen, oder ist das zu primitiv gedacht  ?(

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™