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

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 4. Februar 2016 um 14:22

    Ahhhh jetzt weiß ich wo mein Fehler in der Erklärung liegt. Die VM läuft nicht lokal auf einem Rechner sondern alle Skripte werden so zu sagen ohne Bildschirm und Tastatur ausgeführt. Der User (serviceAcount) ist aber immer auf der VM angemeldet, damit die schon vorhandenen Skripte durchlaufen.

    Auf der VM auf der das Skript vom TaskSchedular angetriggert wird, ist immer nur der ServiceAccount angemeldet. Auf der VM laufen schon mehrere Skripte, die immer zu 100% durchluafen, obwohl keine RDP Sitzung aufgebaut ist.

    Mein Skript, das zu implementieren ist und auch per TaskSchedular angetriggert werden soll, ist das erste Skript, das mit einem MouseClick lauffähig sein soll. Dieser MouseClick aber benötigt (Kenntnisstand jetzt: eine RDP Verbindung, weil der MouseClick nicht ohne RDP ausgeführt werden kann und das Skript solange pausiert, bis eine RDP Session aufgebaut wurde).

    Für mich ist es zwingend notwendig das mein Skript mit dem dauerhaft angemeldeten User läuft ohne eine RDP Session laufen zu lassen, weil ich diese nicht über 24/7 gewährleisten kann. Gibt es eine Möglichkeit das Skript mit MouseClick laufen zu lassen ohne garantierte RDP Session oder ist die MouseClick Funktion dann völlig ungeeignet?

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 4. Februar 2016 um 12:25

    Irgendwie muss ich geschubst werden, damit ich nicht mehr auf dem Schlauch stehe.
    Mein User ist doch permanent eingeloggt, nur die VM ist nicht permanent per RDP verbunden.

    Sofern User einloggen für euch per RDP verbunden heißt, muss ich doch von einer anderen Maschine eine RDP aufbauen oder nicht?

    Tut mir leid das ich so nachfragen muss :( ...

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 3. Februar 2016 um 03:05

    Vielen Dank für Eure Mühe und Hilfe.!

    Also muss ich einen neuen Lösungsansatz finden oder aber weitere Ressourcen für den Aufbau der RDP-Session zu den Zeiten an denen das Skript läuft, zur Verfügung stellen, richtig?

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 3. Februar 2016 um 02:29

    Auf der VM laufen auch weitere Checks (wohlgemerkt ohne Tastatureingaben bzw. MouseClicks) problemlos während der User auf der VM eingeloggt ist, die RDP Session aber disconnected ist).
    Evtl drücke ich mich ja falsch aus. Die VM läuft 24/7 und der User mit dem der Check laufen soll, ist auch 24/7 eingeloggt. Allerdings ist eine RDP-Verbindung in den seltensten Fällen aufgebaut, sodass weder Bild, noch Tastatur/Mouse angeschlossen ist.

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 2. Februar 2016 um 15:16

    Mit dem Skript werdet ihr leider nichts anfagen können, weil es eine netzinterne Anwendung auf Login und Suche von Daten prüft. Da diese WebApp aber aus verschachtelten Frames besteht und die Werte nicht so einfach abzufangen sind, versuche ich nun mit einem MouseClick zu arbeiten.
    Die VM wird über eine RDP Session angesteuert. Der User ist zwar angemeldet aber die RDP Session ist zu 99% disconnected.
    Das Skript wird über den Task Schedular aufgerufen und pausiert ab dem MouseClick bis das eine RDP Session aufgebaut wird.

    OS ist Win7 Professional

  • MouseClicks bei einber VM simulieren

    • Mojo
    • 2. Februar 2016 um 13:27

    Hallo zusammen,

    für einen Check muss ich mit einem MouseClick arbeiten.
    Problem:
    Das Skript läuft auf einer VM, auf der zwar ein User eingeloggt ist aber disconnected. Gibt es eine Möglichkeit MouseClicks trotzdem zu simulieren?
    Momentan läuft das Skrpit nämlich genau zu dem Punkt, an dem ein MouseClick stattfinden soll und hält dann an bis der User connected ist.

    Würde mich über eure Hilfe freuen.

  • Abmeldelink klicken. Frame/Form/Table Elementsuche?!

    • Mojo
    • 2. November 2015 um 15:52

    Vielen Dank für die schnelle Antwort und dein Hilfe.
    Hm, leider stehich jetzt auf dem Schlauch.
    Navigierst du dann einfach über _IENavigate oder wie darf ich das verstehen?

    Durch die Session ID steh ich da ja vor weiteren Problemen

  • Abmeldelink klicken. Frame/Form/Table Elementsuche?!

    • Mojo
    • 2. November 2015 um 14:16

    Hallo zusammen,

    für ein Skript muss ich mich von einer WebApp abmelden und bekomme einfach keinen Zugriff auf den Abmeldelink. Aus dem Grund löse ich es gerade durch stupide Tastatureingabe.
    Mit meinen AutoIT Kenntnissen komme ich leider nicht weiter und würde euch ganz gern fragen, ob ihr mir helfen könnt.

    Nach meinem Verständnis muss ich zu allererst in den iframe "CRMApplicationFrame" und dort nach dem Frame "HeaderFrame" suchen. Im Body des Frames liegt ein form namens "myformId" nach der ich suchen muss. In der form liegt eine tabelle "th-1-headercontainer" in der ich nach dem Text "Abmelden" suchen kann, oder?

    Würde mich über Hilfe freuen.
    Vielen Dank!

    Leider liegt de WebApp intern...

    HTML
    <body>
    <div id="crmUIHostArea">
    <div id="crmUIHostFrameContainer">
    <iframe name="CRMApplicationFrame" title="CRM UI Application" id="CRMApplicationFrame" src="/crm(ZT1SVTVFTWtWT1JGOWZYMTlmTUY5Zk1UVXlBRkJXc1NuaUh0V2dxLUZ5bXJhZ25nPT0=)/bc/bsp/crm/crm_ui_frame/main.htm?crm-client=011&crm-language=DE&crm-domainRelax=min&crmrole=service" frameborder="0" scrolling="no" style="display: block; visibility: visible;">
    <html>
    <frameset rows="42,*" border="0" framespacing="0">
    <frame name="HeaderFrame" title="" id="HeaderFrame" src="/crm/bc/bsp/crm/crmcmp_hdr/bspwdapplication.do?crm-client=011&crm-language=DE&crm-domainRelax=min&crmrole=SERVICE" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize" scrolling="no">
    <html lang="de" xml:lang="de" style="height: 100%;" xmlns="http://www.w3.org/1999/xhtml">
    <body>
    <form name="myFormId" id="myFormId" action="https://crmw2pko1.spk.ag:466/crm(bD1kZSZjPTAxMSZkPW1pbg==)/bc/bsp/crm/crmcmp_hdr/bspwdapplication.do?crmrole=SERVICE" method="post">
    <div id="htmlb_hidden_system_fields">
    <div class="th-ajax-area" id="rootAreaDiv">
    <div class="th-l-headercontainer">
    <table class="th-l-headercontainer-logotext" id="th-l-headercontainer" cellspacing="0" cellpadding="0">
    <tbody>
    <tr valign="top">
    <td class="th-l-headercommandcontainer-logotext">
    <table class="th-l-commandcenter" style="height: 100%;" cellspacing="0" cellpadding="0">
    <tbody>
    <tr valign="top">
    <td class="th-l-commandcentercell">
    <td class="th-l-logoff">
    <span class="testmode" id=":T_link:U_LOGOFF:I_LOGOFF">
    <a class="th-l-logofflink" id="LOGOFF" onclick="if (confirm( 'Bei\x20Abmeldung\x20gehen\x20ungesicherte\x20Daten\x20verloren.\x20Um\x20sich\x20abzumelden,\x20w\xe4hlen\x20Sie\x20\x27OK\x27.\x20Um\x20fortzufahren,\x20w\xe4hlen\x20Sie\x20\x27Abbrechen\x27.')){crmuifClient.winMan.closeAll();crmuifClient.logOff();window.top.location.href='http://www.spk.com';}return false;" href="javascript:void(0)">
    Text - Abmelden
    Alles anzeigen
  • IE.au3 Skript - Verbesserungsvorschläge erwünscht!

    • Mojo
    • 7. Oktober 2015 um 12:39

    Hallo zusammen,

    zwar bin ich kein guter Programmierer aber folgendes Skript führt zum Ziel. Da ich aber glaube das mein Skript ressourcenverschwendend ist, wollte ich mal eure Meinungen/Verbesserunsvorschläge hören.
    Das Skript ruft den IE auf und steuert das interne Intranet an. Dort wird dann der Login geprügt und ein Aufruf einer Testseite. Danach wird der User wieder abgemeldet und der IE geschlossen.
    Über Rückmeldungen würde ich mich sehr freuen.

    AutoIt
    #include <IE.au3>
    #include <String.au3>
    #include <Date.au3>
    RunWait('taskkill /F /IM "iexplore.exe"')
    Global $totalTimer = TimerInit ()
    Global $navigationTimer =TimerInit ()
    Global $oIE = _IECreate ("https://intranet.de/")
    $HWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState($HWND, "", @SW_MAXIMIZE)
    _IEAction($oIE, "visible")
    _IELoadWait($oIE)
    Global $Login = 0
    Global $Search = 0
    Global $result = ""
    Call ("loginIntranet")
    Call ("logOut")
    Call ("quitCheck")
    Func loginIntranet ()
    Local $username = _IEGetObjByName ($oIE,"os_username")
    Local $password = _IEGetObjByName ($oIE,"os_password")
    Local $login_button = _IEGetObjById ($oIE,"loginButton")
    _IEFormElementSetValue ($username, "xxxxxxxxxxx")
    _IEFormElementSetValue ($password, "xxxxxxxxxxx")
    Global $navigationDiff = Round(TimerDiff($navigationTimer)/1000, 2)
    Global $LoginTimer = TimerInit()
    _IEAction ($login_button, "click")
    _IELoadWait($oIE)
    Local $resultPageTitle = _IEPropertyGet ($oIE,"title")
    If $resultPageTitle == ("Welcome to the intranet") Then
       $Login = 1
       $result = $result & 'Login: OK, '
    Else
       $Login = 0
       $result = $result & 'Login: ERROR, '
    EndIf
    Global $loginDiff = Round(TimerDiff($LoginTimer)/1000, 2)
    EndFunc
    Func logOut ()
    Global $logoutTimer = TimerInit ()
    Local $logout_button = _IEGetObjById ($oIE,"logout-link")
    _IEAction ($logout_button, "click")
    _IELoadWait($oIE)
    Global $logoutDiff = Round(TimerDiff($logoutTimer)/1000, 2)
    Global $totalDiff = Round(TimerDiff($totalTimer)/1000, 2)
    EndFunc
    Func quitCheck ()
    	$loginDuration = $loginDiff
    	$logoutDuration = $logoutDiff
    	$totalDuration = $totalDiff
        If ($statusLogin = 1) Then
    	  $result = 'P IntranetCheck EndToEnd=1|time=' & $totalDuration & ";9.5" & ";11" &  '|Login=' & $loginDuration & '|SiteNavigation=' & $navigationDiff & '|Logout=' & $logoutDuration & ' Sucessfull in '& $totalDuration &' seconds: '& $result & 'Login: ' & $loginDuration & "s, " & 'SiteNavigation: ' & $navigationDiff & "s, " & 'Logout: ' & $logoutDuration & "s." &@CRLF
       Else
    	  $result = '2 IntranetCheck EndToEnd=0|time=' & $totalDuration & '|Login=' & $loginDuration & '|SiteNavigation=' & $navigationDiff & '|Logout=' & $logoutDuration & ' Error in '& $totalDuration &' seconds: '& $result & 'Login: ' & $loginDuration & "s, " & 'SiteNavigation: ' & $navigationDiff & "s, " & 'Logout: ' & $logoutDuration & "s."&@CRLF
       EndIf
     If FileExists("C:\Intranet_check_result.txt") then FileDelete("C:\Intranet_check_result.txt")
       FileWrite("C:\Intranet_check_result.txt", $result)
       FileClose("filehandle")
    _IEQuit ($oIE)
    EndFunc
    Alles anzeigen
  • Problem mit Pixelsearch in Verbindung mit VM's

    • Mojo
    • 6. Juli 2015 um 13:38

    Das Skript läuft auf der VM selbst.

    Im Grunde starte ich eine Suchanfrage und warte ab bis mir die Ergebnisse geliefert werden. Leider ist die Seite nicht so prima programmiert und während der Suchanfrage verändern sich keine Werte, Texte, ID's etc. Lediglich wenn meine Suche durchgelaufen ist und die Ergebnisse angezeigt werden, könnte ich Text suchen. Allerdings ändern sich die Ergebnisse permanent und aus dem Grund kann ich auch keinen Festen Wert/Text abfragen.

    Die einzige Konstante die sich ändert, sind die Pixel. Aus dem Grund habe ich den Pixelsearch angewendet:

    AutoIt
    Local $hTimer = TimerInit()
    Local $MaxTime = 70
    Do
    	Sleep(1000)
    	$logastart=PixelSearch(300, 500, 325, 550, 0xDCEEFF)
     Until @error = 0 Or TimerDiff($hTimer) > ($MaxTime * 1000)
    
    
    If TimerDiff($hTimer) > ($MaxTime * 1000) Then
     $Send = 0
     $Receive = 0
     $result = $result & 'Send: ERROR, Receive: ERROR'
    EndSkript ()
    Exit
    Else
    $Send = 1
    $result = $result & 'Send: OK, '
    EndIf
    Alles anzeigen
  • Problem mit Pixelsearch in Verbindung mit VM's

    • Mojo
    • 3. Juli 2015 um 13:39

    Vielen Dank für Eure Antworten.
    Das Problem selbst liegt nicht am Skript, sondern an der Ausführung.

    Auf die VM wird per RDP zugegriffen. Ab dem Pixelsearch läuft das Skript erst weiter wenn die VM aufgerufen wird, da vorher ja im Grunder der Screen fehlt um die Farbwerte zu prüfen. Also so erkläre ich mir das Problem, denn wenn das Skipt angestoßen wird und ein Screen ist vorhanden, läuft es durch.

    Ich habe auch schon 5min nachdem das Skript per TaskSchedular angestoßen wurde mich per RDP angemeldet und erst dann hat der Pixelsearch gegriffen. Gibt es da eine Variante das der PixelSearch greift ohne Screen zu haben oder ist die PixelSearch nur anwendbar wenn ein Screen vorhanden ist?

    Danke und Grüße!

  • Problem mit Pixelsearch in Verbindung mit VM's

    • Mojo
    • 29. Juni 2015 um 15:23

    Hallo zusammen,

    für mein Skript habe ich an drei Stellen mit einem PixelSearch gearbeitet. Das Skript läuft auf einer VM.
    Jetzt habe ich folgendes Problem:
    Starte ich das Skript manuell und habe es über meinen aktiven Monitor laufen, läuft alles wie erwünscht.
    Läuft das Skript aber automatisch und der Screen ist nicht auf dem aktuellen Monitor, hängt das Skript bei der Pixelsuche und läuft erst weiter wenn ich mich auf der VM anmelde und den Screen laufen lasse.

    Habt ihre eine Idee bzw. kennt ihr eine Möglichkeit dieses Problem zu lösen? Mein Pixelsearch ist leider unabdingbar.

    Würde mich über Antworten von euch freuen und bedanke mich schon einmal herzlich bei euch!

    Grüße Mojo

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 13. Mai 2015 um 15:26

    Im Grunde habe ich zu jedem Call eine If-Schleife um Fehler zu melden und diese in die Ausgabe zu schreiben.
    Der Test läuft automatisch alle 10min ohne das ein User die Reihenfolge, evtl. Fehler sofort bemerkt und korrigieren kann.
    Also ist das doch dann mit Call sogar gut, oder?

    Wie gesagt, ich bin Noobie aber so wie ich das jetzt verstehe, ist es doch sogar der bessere Weg mit Call in dem Fall oder?

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 13. Mai 2015 um 13:49

    Warum ich generell mit Call arbeite?
    Es gibt keine Begründung dafür. Sollte ich davon abweichen, weil es fehleranfälliger ist?

    Bin ein Noobie und deswegen immer sehr froß wenn mir von euch geholfen wird

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 12. Mai 2015 um 14:40

    Vielen Dank! Die Hilfe hier im Forum ist wirklich weltklasse!

    Nachdem mein "Do until" nun meinen Wünschen angepasst wurde, frage ich per If-Anweisung ab, ob der @error die Funktion beendet. Wenn der @error dafür verantwortlich ist, soll das Skript einfach weiterlaufen.

    Für den Fall das der @error nicht dafür verantwortlich ist, soll das Skript abbrechen obwohl weitere Funktionen folgen. Gibt es eine Möglichkeit das Skript dann einfach zu beenden?

    EDIT:
    Wieder total unverständlich...

    So sieht jetzt mein Teilcode aus:

    [autoit]


    Local $hTimer = TimerInit()
    Local $MaxTime = 70
    Do
    Sleep(1000)
    $logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    Until @error = 0 Or TimerDiff($hTimer) > ($MaxTime * 1000)
    If TimerDiff($hTimer) > ($MaxTime * 1000) Then
    $statusLeague = 0
    $statusTeam = 0
    Else
    $statusLeague = 1
    $result = $result & 'ShowLeague: OK, '
    EndIf
    EndFunc

    [/autoit]

    Sollte "Then" zutreffen, soll mein Skript alle Funktionen die im Anschluss ausgeführt werden, missachten und stattdessen nur meine letzte Funktion ausführen, in der eine Ausgabe stattfindet.
    Ich habe bisher versucht einfach ein simples Call einzubauen aber das funktioniert nicht:

    [autoit]


    If TimerDiff($hTimer) > ($MaxTime * 1000) Then
    $statusLeague = 0
    $statusTeam = 0
    Call ("quitCheck")

    [/autoit]


    Mein zweiter Versuch war alle Prozesse meines quitCheck in "Then" einzubauen aber meine Funktion quitcheck beinhaltet auch wieder eine Schleife und somit funktioniert auch das nicht.

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 12. Mai 2015 um 01:53

    Und den Vergleich kann ich einfach in eine Variable speichern und diese so anfügen?

    [autoit]

    unitil @error = 0 or $Variable

    [/autoit]
  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 12. Mai 2015 um 01:25

    Ich lasse den Test per WebApp laufen und nutze dafür den IE.
    Wieso ich das bisher noch nicht erwähnt habe, ist mir schleierhaft... X/
    Ich habe also keinen direkten Zugriff auf die Datenbank. Lediglich durch den Anstoß der Suche efolgt ein Zugriff im BackEnd. Weil die App noch nicht ganz rund läuft und die Suche im manchmal im Nirvana landet, soll die Suche nach einer bestimmten Zeit abgebrochen werden.
    Sobald die die Suche läuft, wird die Pixelsuche gestartet und diese läuft so lange bis die Suchergebnisse angezeigt werden.

    Ist es überhaupt möglich die Pixelsuche -so wie ich die verwende- nach einer bestimmten Zeit abbrechen zu lassen?

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 11. Mai 2015 um 14:49

    Damit der Zugriff auf die Datenbank erfolgt, wird eine Suche mit Parametern gestartet. Wenn die Suche dann per Button angestoßen wird, läuft ein Ladebalken. Wenn die Suche abgeschlossen ist, wird die Seite neugeladen und angegebener Pixel gesucht.
    Der Weg muss im Grunde genauso bestehen bleiben, damit ich die exakte Zeit für den Zugriff ausgegeben bekomme. Durch die Suche habe ich keinen direkten Zugriff auf die Datenbank sondern bekomme nur Ergebnisse gefiltert, die meiner vorherigen Suche entsprechen.

  • Do-Funktion um Abbruchkriterium MaxTime erweitern

    • Mojo
    • 11. Mai 2015 um 14:20

    Hallo zusammen,

    da der Zugriff auf die Datenbank manchmal ewig dauert und ich ein Abbruchkriterium setzen möchte, muss folgende Funktion noch erweitert werden:

    [autoit]


    Local $hTimer = TimerInit()
    Do
    Sleep(1000)
    $logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    Until @error = 0

    [/autoit]

    Mein Versuch funzt leider nicht:

    [autoit]


    Local $hTimer = TimerInit()
    Local $MaxTime = 10 * 70000
    Do
    Sleep(1000)
    $logastart=PixelSearch(245, 700, 266, 715, 0xDCEEFF)
    Until @error = 0 Or If $hTimer > $MaxTime
    $statusCustomer = 0
    $result = $result & 'Customer: ERROR, '
    Else
    $statusCustomer = 1
    $result = $result & 'Customer: OK, '

    [/autoit]

    Kann mir jemand weiterhelfen?

    Vielen Dank!

  • If Anweisung _IEPropertyGet?

    • Mojo
    • 6. Mai 2015 um 15:14

    Vielen Dank für Deine Hilfe

    Hab es wie folgt lösen können:

    [autoit]


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

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

    If $loginResult Then
    MouseClick("left",1007,545)
    EndIf

    [/autoit]

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™