Jump to content

Loop in script hängt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

Ihr habt mir schon mal super geholfen, so dass ich jetzt wieder bei einem Problem eure Hilfe anfrage.

 

Ich habe ein script dass mit verschiedenen Webseiten aufruft. Dies geschieht in vordefinierter Reihenfolge über einen Loop Am Ende des Loops wird eine letzte Webseite aufgerufen, die stehen bleibt.

 

Das script schaut so aus:

Dim objExplorer

Dim oShell

Do

Set objExplorer = WScript.CreateObject("InternetExplorer.Application")

Do While (objExplorer.Busy)
    Wscript.Sleep 250
Loop



objExplorer.TheaterMode = False
objExplorer.AddressBar = True
objExplorer.MenuBar = True
objExplorer.StatusBar = True
objExplorer.ToolBar = False
objExplorer.Resizable = True


' Hier die Fenstergröße definieren

objExplorer.Height = 9000
objExplorer.Width = 2000
objExplorer.Left = 0
objExplorer.Top = 0
' objExplorer.FullScreen = True
objExplorer.Silent = False
objExplorer.Visible = True


objExplorer.Navigate "http://www.google.de"

wscript.sleep 10000

objExplorer.Navigate "http://www.bing.de"

wscript.sleep 10000

objExplorer.quit

wscript.sleep 10000


i=i+1

Loop until i >= 2


objExplorer.Navigate "http://www.Stern.de.de"

Wenn die zweite Seite geladen ist und der Loop wieder von vorne losgehen soll stoppt das ganze und diese Fehlermeldung kommt hoch:

 

 

---------------------------

Windows Script Host

---------------------------

Skript: C:\scriptrun\Webseiteprüfung_test.vbs

Zeile: 7

Zeichen: 1

Fehler: Das Objekt mit dem Namen "InternetExplorer.Application" konnte nicht erstellt werden.

Code: 800704A6

Quelle: WScript.CreateObject

 

---------------------------

OK

---------------------------

 

 

Zeile7 wäre das hier: Set objExplorer = WScript.CreateObject("InternetExplorer.Application")

 

Aber warum mag das script nicht?

 

Es lief bisher aug einem WHS 2011 und jetzt bin ich auf einen Server 2012 essentials umgestiegen. Auf dem WHS lief das Script anstandslos auf dem Server 2012 Essentials streikt es plötzlich.

 

Wäre super wenn Ihr mir wieder helfen könntet. :)

Link zu diesem Kommentar

Wie wäre es wenn du

Set objExplorer = WScript.CreateObject("InternetExplorer.Application")

vor das erste Do setzt?

Ist der gleiche Effekt.

 

Wieso rufst du die Webseiten per IE auf? Wieso nicht direkt per HTTP Request?

Der IE löscht beim Schließen auch alle temporären Dateien und Cookies. ginge das mit dem http request auch? Sorry aber ich versteh leider nicht so viel von diesen Scripten... :(

Link zu diesem Kommentar

AFAIK verwendet der W2012 und höher die IE-App als Browser her, evtl. mußt Du dann etwas anderes als InternetExplorer eintragen. Genaueres weiß ich allerdings nicht. Ruf doch auf dem Server die Internet Explorer App auf und schau anschließend im Taskmanager nach welcher Prozess dahinter steht.

bearbeitet von Sunny61
Link zu diesem Kommentar

AFAIK verwendet der W2012 und höher die IE-App als Browser her, evtl. mußt Du dann etwas anderes als InternetExplorer eintragen. Genaueres weiß ich allerdings nicht. Ruf doch auf dem Server die Internet Explorer App auf und schau anschließend im Taskmanager nach welcher Prozess dahinter steht.

Ich hab auf dem Server nur den normalen IE, eine Kachel für die IE App finde ich da gar nicht. Der erste Start des IE mit dem Script öffnet auch den ganz normalen IE.

 

BTW: ich habe es auch auf Windows7 getestet mit IE 11, da hab ich den gleichen Effekt. Vielleicht liegt es am IE11. Wie müsste der Befehl Set objExplorer = WScript.CreateObject("InternetExplorer.Application") denn heißen wenn ich stattdessen den Firefox öffnen möchte?

 

Zweck des Scripts ist Tests mit Google Analytics zu machen. Deswegen muss auch der Browsercache beim Beenden geleert werden.

Link zu diesem Kommentar

Schreibe  Dein "Do" nach

 

Set objExplorer = WScript.CreateObject("InternetExplorer.Application") Do While (objExplorer.Busy) Wscript.Sleep 250 Loop

 

Problem: Du erstellt mehrfach ein gleichlautendes  Objekt "objExplorer" . Das geht  natürlich nicht.

 

Alternativ  kannst Du auch  set objExplorer = nothing vor dem Loop probieren (nicht  getestet)

Link zu diesem Kommentar

Hier mal ein Bsp in Powershell:

 

function Request {
   param([String]$url)
   $r = [System.Net.WebRequest]::Create($url)
   $resp = $r.GetResponse()
   $reqstream = $resp.GetResponseStream()
   $sr = new-object System.IO.StreamReader $reqstream
   $result = $sr.ReadToEnd()
   return $result
}

$i = 0
while($i -lt 2){
   Request "http://www.google.de"
   Start-Sleep -seconds 10 
   Request "http://www.bing.de" 
   Start-Sleep -seconds 10 
   Request "http://www.stern.de" 
   Start-Sleep -seconds 10
}  

 

Evtl. liegts am Ursprünglichen Script auch am Schreibfehler bei der Url stern.de. Dort ist ein .de zu viel.

bearbeitet von Dukel
Link zu diesem Kommentar

Schreibe  Dein "Do" nach

 

Set objExplorer = WScript.CreateObject("InternetExplorer.Application") Do While (objExplorer.Busy) Wscript.Sleep 250 Loop

Dann kommt der Fehler bei dem Aufruf der zweiten Seite:

Problem: Du erstellt mehrfach ein gleichlautendes  Objekt "objExplorer" . Das geht  natürlich nicht

Warum erstele ich das Objekt mehrfach? So weit ich es verstehe wird das Objekt doch durch objExplorer.quit eliminiert. Erst dann wird wieder ein neues Objekt erstellt.

Alternativ  kannst Du auch  set objExplorer = nothing vor dem Loop probieren (nicht  getestet)

Hat auch nicht funktioniert.

 

Gibt es denn eine Möglichkeit den IE einfach mit den dort hinterlegten multiplen Startseiten zu starten und dann wieder zu schließen?

Link zu diesem Kommentar

 

Wo kommt der Fehler "auf der 2. Seite" ?

Damit meinet ich dass der Fehler beim Aufruf der zweiten URL auftritt. Bei: objExplorer.Navigate http://www.bing.de

Do While (objExplorer.Busy)
    Wscript.Sleep 250
Loop


objExplorer.Navigate "http://www.google.de"

wscript.sleep 10000

objExplorer.Navigate "http://www.bing.de"

wscript.sleep 10000

objExplorer.quit

wscript.sleep 10000


i=i+1

Loop until i >= 2

 

.Quit soll den IE beenden. Hier würde ich noch die Sleep-Loop einbauen.

 

Damit ist das Object aber noch initialisiert. Eine weiterer Versuch scheitert.

 

Set object = nothing löscht das Object.

Ich verstehe, aber warum muss das Objekt hier schon beendet oder gelöscht werden? Das Objekt (der IE) soll ja noch eine weitere Webseite laden (in dem Beispiel www.bing.de) und erst dann beendet und gelöscht werden.

 

Die Fehlermeldung ist:

 

---------------------------

Windows Script Host

---------------------------

Skript: C:\scriptrun\Webseiteprüfung_test.vbs

Zeile: 38

Zeichen: 1

Fehler: Das aufgerufene Objekt wurde von den Clients getrennt.

Code: 80010108

Quelle: (null)

 

---------------------------

OK

---------------------------

 

Das deute darauf hin dass das Objekt (der IE) weg ist "Fehler: Das aufgerufene Objekt wurde von den Clients getrennt."

 

Ist es denn möglich mit objExplorer.Navigate die als Startseiten hinterlegten URLs in Reitern zu öffnen? objExplorer.Navigate "about:blank" öffnet den IE mit einer leeren Seite" und objExplorer.Navigate "about:tabs" öffnet den IE mit dieser Vorauswahlseite der zueltzt besuchetn URLs. Mehr hab ich noch nicht rausgefunden...

Link zu diesem Kommentar

So ich habe es jetzt mit Powershell lösen können.

 

Die Webseiten die ich laden möchte sind im IE als Startseiten hinterlegt. Mit dem Powershell Script starte ich den IE, er lädt die gewünschten Webseiten und dann beende ich ihn mit dem Script wieder.

 

Alles in einen Loop gepackt und fein ist es. Viel schöner als vorher mit dem VB Script. :)

 

for ($i = 0; $i -lt 5; $i++)
{
    start-process iexplore.exe
    start-sleep -seconds 90
    Get-Process iexplore | Foreach-Object { $_.CloseMainWindow() | Out-Null }
    start-sleep -seconds 5760
}
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...