IE-Projekt

  • hola,

    also dies ist vllt nicht ein projekt, was man nacher einfach so auf jeden beliebigen rechner nutzen kann (da auf meinen arbeitsplatz zurechtgeschnitten), aber mit einigen änderungen, oder einfach zum lernen, könnte es den ein oder anderen neuen später auch helfen.

    aber im moment brauch ich erstmal wieder eure hilfe. ich bin zwar schon weitergekommen, durch einige hilfe hier im forum, aber es kommt problem nach problem, deswegen wollte ich nicht immer nen neuen thread aufmachen, sondern hier alles zu meinem projekt auffangen und am besten nacheinander besprechen.
    ich weiss jetzt schon von mehreren probs die auf mich zukommen. habe mich auch schon mit allen beschäftigt, aber auf vielen partys gleichzeitig tanzen bringt mich nur mehr durcheinander als so schon.

    ich hab mein script in billig schon fertig, bin aber dabei es umzuschreiben, da ich viele sachen z.B. durch _IE-Functions ersetzen kann/soll.
    leider klappt das aber nicht soooo gut, weil die sachen nicht in der dt. doku stehen, mein engl. echt nicht so prall ist, und ich mich mit html, java usw. auch nur einsteiger taufen kann.

    also folgendes soll das script bewirken:
    nach eingabe von User/PW wird eine ie-seite geladen, wo user/pw eingegeben werden.
    danach läd sich eine neue site, in der verschiedene links geladen werden müssen, die anschließend teilweise gedruckt, bzw alle nach excel exportiert werden sollen.
    diese 5 exportdateien werden über ein makro in excel zu 1 file zusammengefasst und per mail verschickt.

    ich werde zum einem meinen kompletten alten code hier posten (bissel abgeändert) und auch immer den aktuellen. danach wollte ich dann ein thema nach dem anderen abarbeiten und hoffentlich auf eure hilfe hoffen und das ich euch nicht zu sehr nerve =/

    Altes Script

    Spoiler anzeigen
    [autoit]


    run("C:\Program Files\Internet Explorer\IEXPLORE.EXE", "", @SW_MAXIMIZE)
    WinWaitActive("Portal")
    ;Eingabe MARS URL
    MouseClick("left", 190, 90)
    send("http://*")
    send("{enter}")
    sleep(1000)
    ;Passworteingabe (optional mit User und Language)
    WinWaitActive("Anmeldung")
    send("ichbineinpasswort")
    send("{ENTER}")

    ;Öffne Rollmenü
    sleep(6000)
    MouseClick("left", 10, 269)
    sleep(500)
    MouseClick("left", 40, 299)
    sleep(500)
    MouseClick("left", 70, 315)

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

    ;lade Produkte
    sleep(500)
    MouseClick("left", 170, 362)
    ;Excel export
    sleep(11000)
    MouseClick("left", 1240, 188)
    sleep(500)
    MouseClick("left", 448, 420)
    WinWaitActive("Dateidownload")
    MouseClick("left", 689, 511)
    sleep(500)
    send("C:\temp\Produkte.xls")
    send("{ENTER}")
    WinWaitActive("Speichern unter")
    send("j")
    WinWaitClose("Dateidownload")

    ;lade Kunden
    MouseClick("left", 170, 380)
    ;Excel export
    sleep(16000)
    MouseClick("left", 1240, 188)
    sleep(500)
    MouseClick("left", 448, 420)
    WinWaitActive("Dateidownload")
    MouseClick("left", 689, 511)
    sleep(500)
    send("C:\temp\Kunden.xls")
    send("{ENTER}")
    WinWaitActive("Speichern unter")
    send("j")
    WinWaitClose("Dateidownload")

    ;lade Gebiete
    MouseClick("left", 170, 391)
    ;Excel export
    sleep(11000)
    MouseClick("left", 1240, 188)
    sleep(500)
    MouseClick("left", 448, 420)
    WinWaitActive("Dateidownload")
    MouseClick("left", 689, 511)
    sleep(500)
    send("C:\temp\Gebiete.xls")
    send("{ENTER}")
    WinWaitActive("Speichern unter")
    send("j")
    WinWaitClose("Dateidownload")

    ;lade Top Kunden
    MouseClick("left", 170, 408)
    ;drucken
    sleep(17000)
    MouseClick("left", 1157, 191)
    sleep(4000)
    send("{Space}")
    WinWaitActive("Drucken")
    send("!e")
    WinWaitActive("Druckeinstellungen")
    send("!u")
    sleep(1000)
    send("{enter}")
    sleep(1000)
    send("!d")
    sleep(1000)
    WinWaitClose("Drucken")
    send("!{F4}")
    ;Excel export
    MouseClick("left", 1240, 188)
    sleep(500)
    MouseClick("left", 448, 420)
    WinWaitActive("Dateidownload")
    MouseClick("left", 689, 511)
    sleep(500)
    send("C:\temp\Top Kunden.xls")
    send("{ENTER}")
    WinWaitActive("Speichern unter")
    send("j")
    WinWaitClose("Dateidownload")

    ;lade Marken
    MouseClick("left", 170, 426)
    ;drucken
    sleep(20000)
    MouseClick("left", 1157, 191)
    sleep(4000)
    send("{Space}")
    WinWaitActive("Drucken")
    send("!e")
    WinWaitActive("Druckeinstellungen")
    send("!u")
    sleep(1000)
    send("{enter}")
    sleep(1000)
    send("!d")
    sleep(1000)
    WinWaitClose("Drucken")
    send("!{F4}")
    ;Excel export
    MouseClick("left", 1240, 188)
    sleep(500)
    MouseClick("left", 448, 420)
    WinWaitActive("Dateidownload")
    MouseClick("left", 689, 511)
    sleep(500)
    send("C:\temp\Marken.xls")
    send("{ENTER}")
    WinWaitActive("Speichern unter")
    send("j")
    WinWaitClose("Dateidownload")

    ;fasse exportiere Daten mit Makro zusammen
    #include <date.au3>
    ;starte Excel
    run("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", "", @SW_MAXIMIZE)
    WinWaitActive("Microsoft Excel")
    sleep(4000)
    ;starte Makro
    mouseclick("left", 19, 109)
    WinWaitActive("cundus Download Formatting Manager")
    MouseClick("left", 435, 653)
    MouseClick("left", 830, 658)
    ;lade Dateien in Makro
    send("C:\temp\Gebiete.xls")
    send("{Enter}")
    sleep(6000)
    ;speichern der generierten Tabelle
    MouseClick("left", 722, 659)
    MouseClick("left", 7, 938)
    MouseClick("left", 121, 939)
    send("!du")
    Winwaitactive("Speichern unter")
    $Datum = @MDAY & "." & @MON & "." & @YEAR
    send("C:\Tagesumsätze ")
    send($datum)
    send(".xls")
    send("!s")
    winwaitclose("Speichern unter")
    WinClose("Microsoft Excel")
    WinWaitNotActive("Microsoft Excel")

    ;verschicke generierte Tabelle per Mail
    ;öffne Lotus Notes
    WinActivate("Lotus Notes")
    WinSetState("Lotus Notes", "", @SW_MAXIMIZE)
    sleep(2000)
    ;öffne Kachel
    MouseClick("left", 15, 523)
    sleep(4000)
    ;öffne "neue Mail"
    send("!1")
    ;Eingabe Empfänger
    send("ichbineinemailaddi")
    send("{Enter}")
    send("{Tab}")
    send("{Tab}")
    send("{Tab}")
    ;Eingabe Betreff
    $Datum = @MDAY & "." & @MON & "." & @YEAR
    send("Tagesumsätze " & $datum)
    send("{Tab}")
    sleep(1000)
    ;lade Anhang
    send("!dh")
    send("C:\Tagesumsätze ")
    send($datum)
    send(".xls")
    send("{Enter}")
    sleep(1000)
    ;verschicke Mail
    send("!1")
    sleep(2000)
    ;verschiebe Mails aus gesendet in Wochenabschlüsse
    MouseClick("left", 105, 232)
    sleep(1000)
    MouseClickDrag("left", 269, 202, 120, 387)
    send("{ESC}")

    [/autoit]

    Neues Script

    um Missverständniss auszuschließen, werde ich das neue Script immer erweitern, da ich dort schon jede menge rumgebastelt habe, aber die funktionen noch nicht perfektioniert und/oder getestet habe, da ich jetzt die probs nacheinander abarbeiten will.

    Spoiler anzeigen
    [autoit]


    ;Starte neue IE-Instanz
    #include <IE.au3>
    $sUsername = InputBox("UserID", "Bitte geben Sie Ihre UserID ein", "", "", 10, 10 )
    $sPassword = InputBox("Passwort", "Bitte geben Sie Ihr Passwort ein", "", "*", 10, 10)
    $sUrl = "http://*"
    ;öffne
    $oIE = _IECreate ($sUrl,0,1,1,0)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    ;lese Objecte aus
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "sap-user")
    $oPassword = _IEFormElementGetObjByName ($oForm, "sap-password")
    $oSelect = _IEFormElementGetObjByName ($oForm, "sap-language")
    ;Eingabe User/PW/Language
    _IEFormElementSetValue ($oUsername, $sUsername)
    _IEFormElementSetValue ($oPassword, $sPassword)
    _IEFormElementOptionSelect ($oSelect, "German", 1, "byText")
    ;Go
    _IEFormSubmit ($oForm)

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

    ;lade Produkte
    _IELoadWait($oIE)
    $link = "http://***"
    _IENavigate($oIE, $link)

    [/autoit]

    1. Problem dank th.meger gelöst, weiteres schildere ich in neuen post, THX

    • Offizieller Beitrag

    Hi,

    erstes Bsp:

    [autoit]


    #include <IE.au3>
    $sUsername = "Username"
    $sPassword = "Password"
    $sUrl = "http://*"
    $oIE = _IECreate ($sUrl,0,1,1,0)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "param1")
    $oPassword = _IEFormElementGetObjByName ($oForm, "param2")
    _IEFormElementSetValue ($oUsername, $sUsername)
    _IEFormElementSetValue ($oPassword, $sPassword)
    _IEFormSubmit ($oForm)

    [/autoit]

    zweites Bsp:

    [autoit]

    #include<ie.au3>
    $sUrl = "http://ogame.de/portal/?lang=de&frameset=1"
    $oIE = _IECreate($sUrl, 0, 1) ;0,1 visible...0,0 invisible
    $oHWND = _IEPropertyGet($oIE, "hwnd");bingt nichts wenn ie unsichtbar
    WinSetState($oHWND, "", @SW_MAXIMIZE);bingt nichts wenn ie unsichtbar
    $oForm = _IEFormGetCollection($oIE, 0);oder $oForm = _IEFormGetCollection ($oIE, "formular") möglich
    $oUniversum = _IEFormElementGetObjByName($oForm, "Uni")
    _IEFormElementOptionSelect($oUniversum, "1. Universum", 1, "byText");wählt "1. Universum" aus

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

    $oLogin = _IEFormElementGetObjByName($oForm, "login");sucht eingabefeld mit namen "login"
    $sUsername = InputBox("Username", "Bitte geben Sie Ihren Benutzernamen ein:", "Benutzername", " ", 50, 140);öffnet Inputbox zum eingeben für Usernamen
    _IEFormElementSetValue($oLogin, $sUsername)

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

    $oPassword = _IEFormElementGetObjByName($oForm, "pass");sucht eingabefeld mit namen "pass"
    $sPassword = InputBox("Passwort", "Bitte geben Sie Ihr Passwort ein:", "passwort", "*", 50, 140);öffnet Inputbox zum eingeben für Passwort
    _IEFormElementSetValue($oPassword, $sPassword)
    _IEFormSubmit($oForm);bestätigt form

    [/autoit]

    So long,

    Mega

  • THX th.meger, habs anhand von bsp 1 gelöst, und auch geschafft, die sprache aus nem drop-down menü zu wählen =)

    hatte das zwar auch gefunden, aber war mir sehr unsicher, ob es zu meinem prob die lösung ist, da ich halt auf engl. nicht viel verstehe =(

    ich komm dann zum nächsten prob, hoffe da ist auch noch jmd. willig, mir zu helfen *g*

    folgendes bild erscheint nach dem login, und ich muss eigentlich direkt den link "Tagesumsätze (Produkte)" laden. nun weiss ich nicht, ob ich vorher per ie-function auch die anderen links aufklappen muss, oder ich direkt den passenden link "klicken" kann. wobei ich von zweiten ausgehe.

    dafür hatte ich eigentlich _IELinkClickByText($oIE, "Tagesumsatz (Produkte)") gefunden, was beim testen mit anderen seiten auf funzte, aber hier will das einfach nicht.

    infos dazu aus dem quelltext

    Spoiler anzeigen

    createNode(941 , 916 , "SAP_BW_TEMPLATE", "Tagesumsatz (Produkte)", "ZSB_MARS_NAVIGATION", "R", false, 7 );
    createNode(859 , 822 , "SAP_BW_TEMPLATE", "Tagesumsatz (Produkte)", "ZSB_MARS_NAVIGATION", "R", false, 4 );
    createNode(791 , 773 , "SAP_BW_TEMPLATE", "Tagesumsatz (Produkte)", "ZSB_MARS_NAVIGATION", "R", false, 4 );
    createNode(1017 , 986 , "SAP_BW_TEMPLATE", "Tagesumsatz (Produkte)", "ZSB_MARS_NAVIGATION", "R", false, 3 );
    onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000866','0000000841',941 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><img src=b_template.gif class="img1" alt="Web-Report"><img src="s_s_ledg.gif" border="0"></a></td>
    <td style="padding-left:3px"><a href="#941" onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000866','0000000841',941 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><span id="76">Tagesumsatz (Produkte)</span></a></td>
    </tr>
    <tr id="sitemap947"><a name="947"><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td><td><img src=file_empty.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td>
    <td><img src="file.gif" name="file947" class="img2"></td>
    <td><a href="#947" onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000784','0000000747',859 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><img src=b_template.gif class="img1" alt="Web-Report"><img src="s_s_ledg.gif" border="0"></a></td>
    <td style="padding-left:3px"><a href="#859" onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000784','0000000747',859 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><span id="156">Tagesumsatz (Produkte)</span></a></td>
    </tr>
    <tr id="sitemap861"><a name="861"><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td>
    <td><img src="file.gif" name="file861" class="img2"></td>
    <td><a href="#861" onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000716','0000000698',791 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><img src=b_template.gif class="img1" alt="Web-Report"><img src="s_s_ledg.gif" border="0"></a></td>
    <td style="padding-left:3px"><a href="#791" onClick="rolemenu('http://***','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_ADM','YMA_MENU_DEK_ADM','0000000716','0000000698',791 ); return false;" target="_self"
    onmouseover="callDescription('941')"
    onmouseout="hideDescription()"><span id="304">Tagesumsatz (Produkte)</span></a></td>
    </tr>
    <tr id="sitemap794"><a name="794"><td><img src=file_empty.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td>
    <td><img src="file.gif" name="file794" class="img2"></td>
    <td><a href="#794" onClick="rolemenu('http://***2','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_WEB','YMA_MENU_DEK_WEB','0000000043','0000000012',1017 ); return false;" target="_self"
    onmouseover="callDescription('1053')"
    onmouseout="hideDescription()"><img src=b_template.gif class="img1" alt="Web-Report"><img src="s_s_ledg.gif" border="0"></a></td>
    <td style="padding-left:3px"><a href="#1017" onClick="rolemenu('http://***2','Tagesumsatz (Produkte)','U','YMA_MENU_DEK_WEB','YMA_MENU_DEK_WEB','0000000043','0000000012',1017 ); return false;" target="_self"
    onmouseover="callDescription('1053')"
    onmouseout="hideDescription()"><span id="373">Tagesumsatz (Produkte)</span></a></td>
    </tr>
    <tr id="sitemap1019"><a name="1019"><td><img src=file_vert.gif class="img2"></td><td><img src=file_vert.gif class="img2"></td>
    <td><img src="file.gif" name="file1019" class="img2"></td>
    <td><a href="#1019"

  • ich wieder, also oben genanntes problem konnte ich anders lösen.
    es gab zwar nicht die möglichkeit, einfach den "link" zu kopieren und ...byindex/text wollte perdu nicht funktionieren, aber man kann "bookmarks" speichern.
    der link im bookmark läd mir aber die seite, und das ganze über _IENavigate macht das, was ich brauche.

    jetzt komm ich zum nächsten prob, aber es nähert sich (bei den probs die ich zZ kenne) schon dem ende.
    ich müsste auf einen javascript-button klicken.

    sofern ich mit der maus auf den button gehe, zeigt mir der IE unten links folgendes an: javascript:pm_divider('express')

    reicht mir diese info für nen klick, oder muss ich noch den quelltext durchgucken?
    und die passende funktion muss ich noch suchen, werd mich da aber zuhause drangeben und gleich feierabend machen =)

  • reicht nach meinem infoformationsstand leider noch nicht aus....:)
    bei firefox gibts ne schicke funktion auswahlquelltext anzeigen...das zeigt den quelltext zum aktuell markierten "html-element" im browser an ;)

    sprich quelltext??^^

    snoozer

  • werd ich morgen mal testen @ snoozer, mein portable FF hab ich immer dabei *g*

    ansonsten konnte ich zu "Fire"-"Event" nüx finden.
    werde aber morgen dann nochmal mehr infos darüber rausgeben, schickes bild knipsen usw =)

    schonmal danke für eure hilfe. beim stöbern im forum (in der hilfe sowieso), hab ich leider auch noch nix entsprechendes finden, bzw umsetzen können.

  • Zitat

    Original von peethebee
    Hi!

    Jetzt mal nur vom Lesen vor einiger Zeit:
    Könnte man evtl. mit FireEvent auch JavaScript-Funktionen auslösen?

    peethebee


    soweit ich informiert bin kannst du nur ein "event firen" wenn du auch ein objekt hast....z.b.

    [autoit]

    $button = GetObjByName($oForm,"Button")
    $button.fireEvent("OnClick")

    [/autoit]


    wüsste jetzt nicht wie das mit autoit anders gehen könnte....am besten nochmal jonk fragen der hat auch ahnung von so nem zeugs....^^
    der snoozer

  • mal gucken ob ich wirklich mehr infos habe, weil irgendwie kann ich im quelltext so gut wie nix finden =(

    was ich finde, ist das hier

    Spoiler anzeigen

    //Array for language dependent button descriptions
    buttontexts = new Array("Home", "Ein- / Ausklappen Rollenmenü", "Ein- / Ausblenden Standard Navigationsblock", "Ein- / Ausblenden Artikel Navigationsblock", "Standarddruck", "Excel Export", "Tabelle", "Balkendiagramm", "Kreisdiagramm", "Variablenbild", "Zurück", "Zurück zum Anfang", "Bedingungen", "Exception", "Währungsumrechnung", "Springen", "Achsen vertauschen", "Query Eigenschaften", "CSV Export", "Personalisierung einschalten", "Personalisierung ausschalten", "Bookmark setzen", "Bookmark speichern", "Freie Zeitauswahl", "Alle Knoten expandieren", "Bookmark verschicken", "Parameterdruck", "Ein- / Ausblenden leerer Zeilen und Spalten");
    function set_columns()

    das durch "Standarddruck", popt auf, wenn man mit der maus auf dem "button" verweilt. "express" (was unten links im ie erscheint) findet er leider nirgends im quelltext, und die seite lässt sich auch nicht mit FF laden =(

    alles rund um den button was man sehen kann, sieht wie folgt aus:

    PS: irgendwie wartet er auch nicht, bis die seite durch _ienavigate neu geladen wurde (obwohl das ja standardmäßig an sein sollte). quelltext dazu ist im 1. post aktualisiert.

  • hallo,

    da ich bis jetzt dieses problemes nicht herr werden konnte, und mir auch keiner so richtig helfen konnte (auch aufm engl. board nicht), muss ich wohl oder übel zur alten methode zurück.

    nun aber eine frage zu den mouseclicks.
    kann ich die koordination auf das aktuelle fenster beziehen (also nicht auf den ganzen monitor), bzw, was wichtiger wäre, da ich des ie-fenster maximiert starten lasse, gibt es einen befehl, der die mousekoordination abhängig von der auflösung betrachtet?

    weiss nicht wie die praxis ist, aber ich könnte mir vorstellen, dass es rein theoretisch nicht so schwer ist, die koordinaten für eine auflösung von 1280*1024 auf 1024*768 umzurechnen, oder?

    nebenbei wurde mir auch ein vorschlag unterbreitet, wie jmd anderes es macht:

    $realsize = WinGetPos("Dell.com - Login - K-12 Education - Windows Internet Explorer")
    MouseClick("Left",$realsize[0]+60,$realsize[1]+578) ; 3 and 17 greater than next values
    MouseClick("Left",$realsize[0]+62,$realsize[1]+565)
    MouseClick("Left",$realsize[0]+208,$realsize[1]+565)
    sleep(3000)

    aber ehrlich gesagt komm ich damit nicht so klar. hab mir die hilfe (natürlich auf dt) angeguckt, und es auch ausprobiert, aber einen unterschied zum normalen mouseclick mit koordinaten konnte ich nicht feststellen???

    • Offizieller Beitrag
    Code
    MouseCoordMode 
    Sets the way coords are used in the mouse functions, either absolute coords or coords relative to the current active window:
    0 = relative coords to the active window
    1 = absolute screen coordinates (default)
    2 = relative coords to the client area of the active window