Auf dem Standpunkt bin ich auch aber wie gebe ich meiner Anweisung denn den Suchauftrag im Titel zu suchen?
Beiträge von Mojo
-
-
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) -
Nein, natürlich nicht
-
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")
[/autoit][autoit][/autoit][autoit]
Local $loginResult = StringInStr ( $loginPageTitle, "Überprüfung")If _IEPropertyGet ($loginResult) Then
[/autoit]
MouseClick("left",1007,545)
Else @errorDer Code ist wahrscheinlich von Anfang bis Ende unbrauchbar...
Vielen Dank für Eure Hilfe!
-
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...
-
Super! Genau sowas meinte ich. Allerdings habe ich drei Funktionen mit verschiedenen MgsBoxen. Demnach benötige ich nur zwei weitere globale Variablen, oder?
-
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.
-
Ich danke Euch vielmals!
Solch dumme Fehler... -
Hallo zusammen,
dies ist meine TimeDiff-Funktion:
[autoit]
[/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")
EndFuncSie 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.
-
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!
-
Niemand eine Idee?
-
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]
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
Func frameAusgabe ()Local $oFrames = _IEFrameGetCollection($oIE)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
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)EndFunc
[/autoit]Die MsgBox zeigt mir nun an das der Seite folgender Frame unterliegt:
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?
-
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:
Codehtml -> 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-lkBringt dir das was?
-
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:
Hat aber auch nicht fuinktioniertMache 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:
-
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!
-
Vielen Dank!
-
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 ()
[/autoit][autoit][/autoit][autoit]
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
NextSleep (10000)
[/autoit][autoit][/autoit][autoit]
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, '
EndIfEndFunc
[/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!
-
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!
-
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!
-
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]
[autoit]
wird garnicht erst angenommen._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 ()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
_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)Local $loginPageTitle = _IEPropertyGet ($oIE,"title")
[/autoit][autoit][/autoit][autoit]
Local $loginResult = StringInStr ( $loginPageTitle , 'Gator WebServices')
If $loginResult > 0 Then
$statusLogin = 1
$result = $result & 'Login: OK, '
Else
$statusLogin = 0
$result = $result & 'Login: ERROR, '
EndIf
EndFuncFunc showJournal ()
[/autoit]
_IENavigate($oIE,"gator/zwf/Module/Report/Report.aspx")
EndFuncEDIT: 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 " Monatsjournale" suchen und den Click mit IEAction auslösen, oder ist das zu primitiv gedacht