Website speichern und javascript "steuern"

  • hey ho also ich hab schon wieder ein paar probleme-.-
    1)ich habe mitlerweile eine website mit AutoIT geöffnet und möchte diese specihern ich kann sie NICHT mit IEget speichern da ich mich zuerst einloggen muss...so da hab ich mir gedacht würde ja gehen mit dem speichern dialog...danach möchte ich datei nach einem bestimmten string durchsuc
    chen(das problem ist glaub ich schon gelöst)...

    Spoiler anzeigen
    [autoit]


    FileSaveDialog ( "Datei speichern...", "C:\", "Html (*.html)")
    WinWait("Datei speichern...","",3)
    Send("start");rein theretisch müsste das auch möglich sein da die texteingabe zum glück im richtigen feld startet....
    Send("{ENTER}")
    $foStart = FileOpen ( "C:\start.html",0)
    $fzStart = FileGetSize ("C:\start.html")
    $frStart = FileRead ($foStart,$fzStart)
    MsgBox(0,"Inhalt",$frStart)
    ;dies diente mir nur dazu um zu schaun was gespeichert wurde oder auch nicht

    [/autoit]


    Was habe ich falsch gemacht oder könnte frundlegend verändert werden???
    2)Problem gibt es eine möglichkeit auf javascriptelemente zugreifen wie bei dem folgenden quelltext??

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>;
    $sUrl = "http://www.keine-ahnung.de"
    $oIE = _IECreate ($sUrl)
    $oHWND = _IEPropertyGet($oIE, "hwnd");was er hier macht ist mir auch nicht ganz klar....
    WinSetState ($oHWND, "", @SW_MAXIMIZE )
    $oForm = _IEFormGetCollection ($oIE, 0)
    $oUsername = _IEFormElementGetObjByName ($oForm, "user")
    $sUsername = InputBox ( "Username", "Bitte geben Sie Ihren Benutzernamen ein:" , "Benutzername", " ", 50,140)
    _IEFormElementSetValue ($oUsername, $sUsername)
    $oPassword = _IEFormElementGetObjByName ($oForm, "spwd")
    $sPassword = InputBox ( "Passwort", "Bitte geben Sie Ihr Passwort ein:" , "passwort" , "*" , 50, 140)
    _IEFormElementSetValue ($oPassword, $sPassword)
    _IEFormSubmit ($oForm)

    [/autoit]


    und hier der javascript text auf den ich zugreifen will....
    (ist dynamisch!! d.h. mal sind mehr auswahlmöglichkeiten vorhaden mal weniger)

    Spoiler anzeigen


    <input class="button" name="fleet[8]" size="2" onkeyup="calculate()" type="text">
    und das auch noch...
    <input name="first" onclick="document.formular.what[0].checked=true" value="erste" checked="checked" type="radio"> daserste&nbsp;
    <input name="first" onclick="document.formular.what[0].checked=true" value="zweite" type="radio"> daszweite&nbsp;
    <input name="second" onclick="document.formular.what[1].checked=true" value="erste" type="radio"> dasersteimzweiten&nbsp;
    <input name="second" onclick="document.formular.what[1].checked=true" value="zweite" type="radio"> dasersteimzweiten&nbsp;
    ich möchte dann halt das erste was ja hier zurzeit nen hacken hat den hacken sozusagen wegmachen und dann beim zweiten nen hacken des wird dann auch mit ner form bestätigt(des weiß ich wies geht)

    Ich hoffe ihr könnt mir helfen des bereit mir schon kopfschmerzen^^ immer wieder neue probleme -.- naja okay hoff ihr könnt mir helfen...snoozer

  • also problem 1 ist jetzt erfolgreich gelöst worden.....

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    $sUrl = "http://www.some-url.de/start.php"
    $oIE = _IECreate ($sUrl)
    $IEContent_Start = _IEDocReadHTML($oIE);Hier wird die aktuell geöffnete Seite in der Variable $IEContent_Start gespeichert...also steht zurzeit der inhalt von start.php in html format in der variable...

    [/autoit]

    mein zweites problem wurde bis jetzt leider noch nicht gelößt wie kann ich auf javascript elemente zugreifen??? problem der text ist dynamisch...

  • die url gibt es zurzeit nur auf meinem pc^^
    aber hier einmal ein ausschnitt aus dem quellcode

    Spoiler anzeigen


    <form action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    ........
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">


    also ich möchte jetzt als beispiel das element mit dem namen "count[1]" ansprechen dort eine 1 "speichern" bzw eingeben (lassen) und dann den "Weiter"-button benutzen

  • hoi,

    wenn ich Dich richtig verstehe meinst Du sowas hier:

    [autoit]


    #include <ie.au3>
    $oIE = _IECreate ("file:///"&@ScriptDir&"\foobar.html")
    _IELoadWait($oIE)
    $o_form = _IEFormGetObjByName($oIE, "uffuff")
    $o_feld1 = _IEFormElementGetObjByName($o_form, "count[0]")
    _IEFormElementSetValue($o_feld1, "1")
    $o_feld2 = _IEFormElementGetObjByName($o_form, "count[1]")
    _IEFormElementSetValue($o_feld2, "huhu")
    $o_send = _IEGetObjByName($o_form, "action2")
    $o_send.click()

    [/autoit]


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

    <head>

    <title>fooobar</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    <meta name="generator" content="Webocton - Scriptly" />

    </head>

    <body>
    <form name="uffuff" action="./weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[0]" type="text">
    <input class="button" style="width: 100px;" name="count[1]" type="text">
    <input class="button" style="width: 100px;" name="count[13]" type="text">
    <input ondblclick="this.disabled=true" class="button" name="action1" value="Weiter" type="submit">
    <input onclick="if (!confirm('Möchten Sie nicht auf die nächste Website?')) return false;" class="button" name="action2" value="Nicht weiter" ondblclick="this.disabled=true" type="submit">
    </form>
    <body>

  • uhhh yeah so mein ich das..nur geht das ganze auch wenn die form keinen namen hat??
    also die form in dem bespiel heißt "uffuff"
    <form name="uffuff" action="./weiter.php" method="post">
    geht das ganze auch wenn die form keinen namen hat also so aussieht:
    <form action="./weiter.php" method="post">???

    _IEFormGetObjByName($oIE, "") so gehts nicht!!!

    sonst ist es genau das was ich suche!!!

  • jop auch das geht ;)

    [autoit]


    #include <ie.au3>
    $oIE = _IECreate ("file:///"&@ScriptDir&"\foobar.html")
    _IELoadWait($oIE)
    $o_form = _IEFormGetObjByName($oIE, 0) ;0 = index des Forms
    $o_feld1 = _IEFormElementGetObjByName($o_form, "count[0]")
    _IEFormElementSetValue($o_feld1, "1")
    $o_feld2 = _IEFormElementGetObjByName($o_form, "count[1]")
    _IEFormElementSetValue($o_feld2, "huhu")
    $o_send = _IEGetObjByName($o_form, "action",1) ;1 = das zweite Element bei Namensgleicheit
    $o_send.click()

    [/autoit]
  • das ziel rückt näher^^
    also zurzeit werden die richtigen werte in den richtigen boxen geschreiben hat alles super funktioniert(ohne Probleme)!
    nur die bestätigung funktioniert noch nicht 100% wie gewollt:weinen:
    Hier nocheinaml kurz das problem

    <jonk quelltext vorletzte zeile>
    $o_send = _IEGetObjByName($o_form, "action",1)
    $o_send.click()
    => bestätigt mir dieses Element
    <input onclick="if (!confirm('Möchten Sie nicht Weiter?')) return false;" class="button" name="action" value="Nicht Weiter" ondblclick="this.disabled=true" type="submit">

    ABER ich möchte dieses element ansprechen...
    <input ondblclick="this.disabled=true" class="button" name="action" value="Weiter" type="submit">

    $o_send = _IEGetObjByName($o_form, "action",1)
    $o_send.dblclick()
    oder
    $o_send = _IEGetObjByName($o_form, "action",1)
    $o_send.click()
    funktioniert da nicht
    sonst ist alles wunderbar :)

    ...immer diese rechtschreibfehler -.-

  • Die "1" ist für das Zweite element mit dem namen "action".
    Für den ersten Button mußt Du die 0 nehmen ;)

    [autoit]


    $o_send = _IEGetObjByName($o_form, "action",0)
    $o_send.click()

    [/autoit]
  • :schild4: Okay hab grad gemerkt ich hatte die 0 als button aber was so nen semikolon anrichtet nenenene :hammer:
    :rofl:
    VIELEN VIELEN DANK mir wurde damit weiter geholfen!

  • mhhhh......problem mit den funktionen..-.-

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    $sUrl = "http://www.some-url.com"
    $oIE = _IECreate ($sUrl)
    _IENavigate($oIE, "http://www.some-url.com/weiter.php")
    _IELoadWait($oIE);funktioniert!
    MsgBox(0,"fertig","fertig warten 1");Box wird angezeigt...
    $o_form = _IEFormGetCollection($oIE, 0) ;0 = index des Forms
    MsgBox(0,"fertig",$o_form);liefert so nen rechteck also addresse des forms..
    $o_feld2 = _IEFormElementGetObjByName($o_form,"count[2]")
    MsgBox(0,"fertig",$o_feld2);lieft 0 siehe bedeutung unten....
    _IEFormElementSetValue($o_feld2, "1")

    [/autoit]

    On Failure - Returns 0 and sets @ERROR
    @ERROR - 0 ($_IEStatus_Success) = No Error


    so sieht der quelltext immer noch aus...
    <form action="/weiter.php" method="post">
    <input class="button" style="width: 100px;" name="count[2]" type="text">
    was ist daran flasch könnte mir mal jemand sagen was ich verplant hab???des komische ist nur zwischendurch hats irgendwann funktioniert -.-

  • des hat sich nun endgültig erledigt mir ist grad aufgefallen dass manchmal mehr formen da sind oder machmal weniger...und ich meine form ja mit nem index anspreche kann des eindeutig mal zu fehlern kommen...habs jetzt mit der do-while(sry until) schleife relisiert...

    [autoit]


    $form_position = 0
    $form_positon_found = False
    Do
    $o_form = _IEFormGetObjByName($oIE, $form_position)
    $o_count8 = _IEFormElementGetObjByName($o_form, "count[8]")
    $count8_return = _IEFormElementSetValue($o_count8, "1")
    $o_send = _IEGetObjByName($o_form, "action",0)
    $o_send.click()
    If $count8_return = 0 Then
    ;$form_positon_found = False
    $form_position = $form_position + 1
    Else
    $form_positon_found = True
    EndIf
    Until $form_positon_found = True

    [/autoit]


    Hier zählt er also so lange hoch bis er die richtige form gefunden hat und das richtige objekt da drinn...