2010-01-20 11 views
8

Abbiamo un cluster di test automatico basato sulla griglia di selenio.Come determinare a livello di codice la versione installata di IE da uno script

Per gestire il cluster, ho creato una raccolta di attività Rake (Ruby) che possono avviare, riavviare, eseguire il ping e arrestare i nodi. Sto testando la nostra applicazione su diversi browser tra cui IE6, IE7 e IE8. Ciò significa che ciascun nodo nel cluster deve essere a conoscenza della versione di IE installata in modo che possa richiedere il nome corretto del profilo di rete del selenio (ad esempio: "IE6 on Windows XP" rispetto a "IE8 on Windows Vista"), in modo che determinati test possano essere scritti su tali browser.

La mia domanda:

vorrei ridurre il lavoro di configurazione qui. Come determinare a livello di codice quale versione di IE è in esecuzione sul sistema corrente? Ho provato la seguente tecnica:

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

Ma questo restituisce solo versioni dei programmi che sono stati installati con il Windows Installer, quindi IE non compare in questo elenco.

Idealmente mi piacerebbe essere in grado di determinare questo da all'interno di uno script Rake, o almeno qualcosa che è richiamabile da uno script Rake.

risposta

2

È possibile utilizzare WMI, so che non è uno script rake, ma è possibile eseguire lo script (o creare un'applicazione .NET) e inserire i risultati nell'applicazione.

È una specie di trucco, ma almeno funzionerà. Ecco un codice da Technet.

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 

completa Source

Una volta che avete queste informazioni, è possibile passare le informazioni allo script rake utilizzando la riga di comando.

rake YourScript[<argument from vbscript>] 

EDIT: È possibile copiare/incollare questo codice in un file, il nome whatever.vbs, e utilizzare il cscript comando per eseguire lo script.

cscript // Nologo ie_version.vbs

+0

Impressionante, questo sembra funzionare, tuttavia le uscite WScript.Echo a una finestra. C'è un modo semplice per stampare su stdout? – Maciek

+0

vedi le modifiche, è quello che vuoi? –

+0

Grazie! Ho cercato le opzioni di cscript e ho aggiunto // Nologo per omettere il messaggio di copyright di MS. – Maciek

1

Prova questo per qualsiasi versione di 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) 
Problemi correlati