2010-01-20 14 views
8

Mamy zautomatyzowany klaster testowy oparty na sieci selenowej.Jak programowo określić zainstalowaną wersję IE ze skryptu

Aby zarządzać klastrem, zbudowałem kolekcję zadań Rake (Ruby), które mogą uruchamiać, restartować, pingować i zatrzymywać węzły. Testuję naszą aplikację w wielu przeglądarkach, w tym IE6, IE7 i IE8. Oznacza to, że każdy węzeł w klastrze musi wiedzieć, która wersja IE jest zainstalowana, aby mogła uzyskać poprawną nazwę profilu siatki selenowej (np. "IE6 on Windows XP" vs. "IE8 on Windows Vista"), aby można było wykonać określone testy dla tych przeglądarek.

Moje pytanie:

chciałbym obniżyć prac konfiguracyjnych tutaj. W jaki sposób programowo określić, która wersja IE działa w bieżącym systemie? Próbowałem następujące techniki:

wmic product where "Vendor like '%Microsoft%'" get Name, Version 

Ale to tylko zwraca wersje programów, które zostały zainstalowane z Instalatora Windows, IE, więc nie pojawi się na tej liście.

Idealnie chciałbym móc to ustalić z wnętrza skryptu Rake lub przynajmniej czegoś, co można wywołać ze skryptu Rake.

Odpowiedz

2

Możesz używać WMI, wiem, że to nie jest skrypt rake'u, ale możesz uruchomić skrypt (lub utworzyć aplikację .NET) i podać wyniki do swojej aplikacji.

To trochę hack, ale przynajmniej zadziała. Oto kod z technetu.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _ 
    "\root\cimv2\Applications\MicrosoftIE") 

Set colIESettings = objWMIService.ExecQuery _ 
    ("Select * from MicrosoftIE_Summary") 

For Each strIESetting in colIESettings 
    Wscript.Echo strIESetting.Version 
Next 

Pełna Source

Po uzyskaniu tej informacji, można przekazać informacje do skryptu natarcia przy użyciu wiersza polecenia.

rake YourScript[<argument from vbscript>] 

EDIT: można kopiować/wklej ten kod do pliku, nazwę to whatever.vbs i użyć CSCRIPT polecenie wykonać skrypt.

cscript // Nologo ie_version.vbs

+0

Awesome, to wydaje się działać jednak wyjść wscript.echo do okna. Czy istnieje łatwy sposób wyprowadzania na standardowe wyjście? – Maciek

+0

zobaczyć zmiany, czy tego chcesz? –

+0

Dzięki! Sprawdziłem opcje cscript, a także dodałem // Nologo, aby pominąć wiadomość o prawach autorskich MS. – Maciek

1

Spróbuj to dla każdej wersji systemu Windows:

Const HKEY_LOCAL_MACHINE = &H80000002 

strComputer = "." 

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 

strKeyPath = "SOFTWARE\Microsoft\Internet Explorer" 

strValueName = "Version" 

oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 

Wscript.Echo "Installed IE Version: " & strValue 

Wscript.Echo "IE Version: " & Left(strValue,1) 
Powiązane problemy