Mediacenter 10 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 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. :) Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 Wie wäre es wenn du Set objExplorer = WScript.CreateObject("InternetExplorer.Application") vor das erste Do setzt? Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 Wieso rufst du die Webseiten per IE auf? Wieso nicht direkt per HTTP Request? Zitieren Link zu diesem Kommentar
Mediacenter 10 Geschrieben 24. Februar 2014 Autor Melden Teilen Geschrieben 24. Februar 2014 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... :( Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 (bearbeitet) 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 24. Februar 2014 von Sunny61 Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 Welche Temporären Dateien und Cookies? Bei einem HTTP Request per Script (ich kann dir gerne ein Powershell Beispiel schicken) wird die Antwort im Script (RAM) gehalten. Was ist der Zweck des Scripts? Zitieren Link zu diesem Kommentar
Mediacenter 10 Geschrieben 24. Februar 2014 Autor Melden Teilen Geschrieben 24. Februar 2014 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. Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 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) Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 (bearbeitet) 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 24. Februar 2014 von Dukel Zitieren Link zu diesem Kommentar
Mediacenter 10 Geschrieben 24. Februar 2014 Autor Melden Teilen Geschrieben 24. Februar 2014 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? Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 24. Februar 2014 Melden Teilen Geschrieben 24. Februar 2014 Wo kommt der Fehler "auf der 2. Seite" ? .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. Zitieren Link zu diesem Kommentar
Mediacenter 10 Geschrieben 25. Februar 2014 Autor Melden Teilen Geschrieben 25. Februar 2014 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... Zitieren Link zu diesem Kommentar
Mediacenter 10 Geschrieben 26. Februar 2014 Autor Melden Teilen Geschrieben 26. Februar 2014 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 } Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 27. Februar 2014 Melden Teilen Geschrieben 27. Februar 2014 Wenn Du schon die PowerShell nimmst, warum fragst Du nicht darin einfach die URLs direkt ab? Siehe: http://newyear2006.wordpress.com/2011/05/24/powershell-fr-den-einfachen-webzugriff-um-dienste-im-web-aufzurufen-oder-xml-dokumente-zu-laden/ Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.