IE steuern

Konstantin

Grünschnabel
Hallo @all

Weis jetz zwar nicht ob ich in deisem Teil des Forums richtig bin, aber naja!

Folgendes Problem:

Ich bin gerade dabei meinen Programmiertechnischen Horizont etwas zu erweitern.
Nun habe ich mir in den Kopf gesetzt, ein Skript zu schreiben, dass den IE dazu veranlasst etwas zu tun, was ich vorher ins Script geschrieben habe.

Z:B Rufe den IE auf, gehe auf Google, Suche nach Bla und wähle das 3 Suchergebnis aus. Dort gehst du auf den Button mit dem Nmaen "hallo" und klickst drauf.


Mirt welcher Programmiersprache/Skriptsprache lässt sich dies am leichtesten tun.

habe es mal mit Windows Scripting Host versucht. Der kann aber (laut meiner bisherigen Erkentnis keine Links, Buttons erkennen, sondern nur z.B Tatsen schicken)

dann habe ich es mit Perl versucht (Mit dem Modul Win32-IE-Mechanize-0.008) Dies hab ich aber nie Richtig einbinden können, da es tausende von Fehlern wärend dem installieren (make /make install) gab.

hat jemand ne Idee? Wäre für jeden Forschlag dankbar!

Danke

MfG

Ich
 

_voodoo

Erfahrenes Mitglied
Geht mit PHP nicht, weil PHP auf Server. Ich denke sowas wird nicht gehen, dann könnte ja jeder Hacker ....
 

Sven Mintel

Mitglied
Konstantin hat gesagt.:
habe es mal mit Windows Scripting Host versucht. Der kann aber (laut meiner bisherigen Erkentnis keine Links, Buttons erkennen, sondern nur z.B Tatsen schicken)

Mit dem WSH geht es.
erzeuge eine IE-Instanz, da hast du dann vollen Zugriff auf das Dokument im IE.
Du kannst es auslesen, dort navigieren, und bspw. auf Buttons klicken lassen.
Dafür verwendest du die ganz normalen DHTML-Methoden und Eigenschaften von JScript.
 

Konstantin

Grünschnabel
Danke für die schnelle Antwort!

@ Sven Mintel:
Kannst du bitte mal einen kurzen Ausschnitt posten?

Kann mir nicht so recht vorstellen wie das gehen soll!
 

Sven Mintel

Mitglied
Code:
    //IE-Instanz erzeugen
ie=new ActiveXObject('InternetExplorer.Application');
    
    //shell-Objekt erzeugen
shell=new ActiveXObject('WScript.shell');

    //IE anzeigen
ie.visible=true;

    //zur Google-Seite wechseln
ie.Navigate('http://www.google.de/search?q=bla');

    //1sec warten, bis Google-Seite geladen wurde
WScript.Sleep(1000);

    //Falls google noch nicht da ist, weiter warten
while(ie.readyState!=4)
    {
            WScript.Sleep(500);
    }
    
    //Zähler für die Links
a=0;

    /**
      * alle links der google-Seite durchgehen
      * die betreffenden links haben alle 1. Gemeinsamkeit
      * - sie sind erster kindknoten eines P-Elements mit der Klasse 'g'
      * diese Gemeinsamkeit wird gesucht und beim 3. Treffer auf den Link geklickt
      **/ 
     
for(i=0;i<ie.document.all.tags('P').length;++i)
    {
        if(ie.document.all.tags('P')[i].className=='g' 
            && ie.document.all.tags('P')[i].children(0).tagName=='A')
            {
                a++;
            }
        if(a==3)
            {
                ie.document.all.tags('P')[i].children(0).click();
                break;
            }
    }
    
    
    //Wenn Google kein Ergebnis liefert, WScript beenden
if(a<3)
    {
        shell.Popup('kein Google-Ergebnis');
        WScript.Quit();
    }
    
    
    //wieder warten
WScript.Sleep(1000);
while(ie.readyState!=4)
    {
            WScript.Sleep(500);
    }


    /**
      * Input-Element mit 
      *   type=button
      * und
      *   value=hallo
      * suchen und im Fall des Auufindens raufklicken
      **/

for(i=0;i<ie.document.all.tags('INPUT').length;++i)
    {
        if(String(ie.document.all.tags('INPUT')[i].type).match(/button/i) 
            && String(ie.document.all.tags('INPUT')[i].value).match(/hallo/i)) 
            {
                ie.document.all.tags('INPUT')[i].click();
                shell.Popup('Ich habe geklickt');
                WScript.Quit();
                
            }
    }

    //Nix gefunden
shell.Popup('Hier ist kein Hallo-Button zu finden');
WScript.Quit();
 

Hardy002

Grünschnabel
1) Hallo ich habe fast ein ähnliches Problem zu lösen.
ich möchte die Seite http://www.morgenstern-reparatur-service.tv/shop/ aufrufen

2) die gespeicherte Artikelnummern der ersten zeile einer Text- oder Excel- Datei (Artikelnummer.txt) auslesen und im suchfeld eingeben.

3) die Suche ausführen

4) den Artikellink anwählen

5) den Link zum Bild in einer Text- oder Ecel- Datei speichern

6) das Programm solange ausführen lassen bis alle Artikelnummern in der Artikelnummer.txt Datei abgearbeitet wurden.

MFG der Hardy
 

Hardy002

Grünschnabel
Hallo erst heute mit dem Projekt angefangen. Sehr weit bin ich noch nicht gekommen. Ich habe mal ein bissel mit vbs angefangen und das ist mein Code bislang:

set fs= CreateObject("scripting.filesystemobject")
set dateiinhalt = fs.opentextfile("c:\test.txt")
inhalt = inhalt & dateiinhalt.readline
dateiinhalt.close

msgbox inhalt

Set IE=WScript.CreateObject("InternetExplorer.Application","ie")
IE.navigate( inhalt )
IE.left=10
IE.top=10
IE.height=500
IE.width=750
IE.menubar=0
IE.toolbar=0
IE.statusBar=0
IE.visible = true
Do Until IE.ReadyState=4
Loop

Ist noch nicht viel aber die richtige Seite wird immerhin schon mal im Explorer geladen.:)
 

Sven Mintel

Mitglied
Naja...die Suche kannst du dir schonmal sparen, denn wenn du die Artikel-Nummern kennst, kannst du die dazugehörigen Seiten direkt aufrufen, die URLs sind so aufgebaut:

http://www.morgenstern-reparatur-service.tv/shop/index.php?main_page=product_info&products_id=[hier die Produkt-ID]

In den jeweiligen Seiten gibt es ein <div> mit der ID "bilder"....dort lese das src-Attribut des ersten Bildes aus, und du hast den Pfad zum Bild, den du weiterverarbeiten kannst.

Für das Ganze benötigst du nicht mal eine IE-Instanz, du kannst das direkt per WSH über einen WinHTTPRequest abfragen, das spart obendrein noch Zeit, weil nur der Sourcecode der Dokumente geholt wird und nicht das ganze Drumherum geladen werden muss.