2010-01-20 12 views
8

Tenemos un clúster de pruebas automatizado basado en selenium-grid.Cómo determinar mediante programación la versión instalada de IE a partir de un script

Para administrar el clúster, he creado una colección de tareas de Rake (Ruby) que pueden iniciar, reiniciar, hacer ping y detener nodos. Estoy probando nuestra aplicación en varios navegadores, incluidos IE6, IE7 e IE8. Esto significa que cada nodo del clúster debe conocer qué versión de IE está instalada para que pueda reclamar el nombre correcto del perfil de la red de selenio (p. Ej .: "IE6 on Windows XP" frente a "IE8 on Windows Vista"), de modo que se puedan escribir ciertas pruebas contra esos navegadores.

Mi pregunta:

me gustaría reducir el trabajo de configuración aquí. ¿Cómo determino programáticamente qué versión de IE se está ejecutando en el sistema actual? He intentado el siguiente técnica:

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

Pero esto sólo devuelve las versiones de los programas que se instalaron con el instalador de Windows, por lo que IE no aparece en esta lista.

Idealmente me gustaría poder determinar esto desde el interior de un script de Rake, o al menos algo que se puede invocar desde un script de Rake.

Respuesta

2

Puede usar WMI, sé que no es un script de rake, pero podría ejecutar el script (o crear una aplicación .NET) y alimentar los resultados en su aplicación.

Es un truco, pero al menos funcionará. Aquí hay un código de 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 vez que tenga esta información, se puede pasar la información a su script rastrillo de la línea de comandos.

rake YourScript[<argument from vbscript>] 

EDIT: Puede copiar/pegar este código en un archivo, el nombre de whatever.vbs, y utilizar el cscript comando para ejecutar la secuencia de comandos.

cscript // Nologo ie_version.vbs

+0

impresionante, esto parece funcionar, sin embargo salidas Wscript.Echo a una ventana. ¿Hay alguna manera fácil de enviar a stdout? – Maciek

+0

ver las ediciones, ¿es eso lo que quieres? –

+0

Gracias! Busqué opciones de cscript y también agregué // Nologo para omitir el mensaje de copyright de MS. – Maciek

1

probar este para cualquier versión de 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) 
Cuestiones relacionadas