2010-01-20 3 views
8

Nous disposons d'un cluster de test automatisé basé sur la grille de sélénium.Comment déterminer par programme la version installée d'IE à partir d'un script

Pour gérer le cluster, j'ai construit une collection de tâches Rake (Ruby) qui peuvent démarrer, redémarrer, pinguer et arrêter les nœuds. Je teste notre application à travers un certain nombre de navigateurs, y compris IE6, IE7 et IE8. Cela signifie que chaque nœud du cluster doit savoir quelle version d'IE est installée pour pouvoir prétendre au bon nom de profil de la grille de sélénium (par exemple: "IE6 on Windows XP" par rapport à "IE8 on Windows Vista"), afin que certains tests puissent être écrits sur ces navigateurs.

Ma question:

Je voudrais réduire le travail de configuration ici. Comment puis-je déterminer par programme quelle version d'IE est en cours d'exécution sur le système actuel? J'ai essayé la technique suivante:

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

Mais cela ne retourne versions de programmes qui ont été installés avec Windows Installer, si IE ne figure pas dans cette liste.

Idéalement, j'aimerais pouvoir le déterminer à l'intérieur d'un script Rake, ou du moins à partir d'un script Rake.

Répondre

2

Vous pouvez utiliser WMI, je sais que ce n'est pas un script rake, mais vous pouvez exécuter le script (ou créer une application .NET) et alimenter les résultats dans votre application.

C'est un peu un hack, mais au moins ça va marcher. Voici du code 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 

pleine Source

Une fois que vous avez ces informations, vous pouvez transmettre les informations à votre script de coupe en utilisant la ligne de commande.

rake YourScript[<argument from vbscript>] 

EDIT: Vous pouvez copier/coller ce code dans un fichier, nommez-whatever.vbs, et utilisez la commande cscript pour exécuter le script.

cscript // Nologo ie_version.vbs

+0

Impressionnant, cela semble fonctionner, cependant les sorties WScript.Echo à une fenêtre. Existe-t-il un moyen facile de sortir sur stdout? – Maciek

+0

voir les modifications, c'est ce que vous voulez? –

+0

Merci! J'ai tapoté avec des options cscript et j'ai ajouté // Nologo pour omettre le message de copyright de MS. – Maciek

1

Essayez ceci pour toute version 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) 
Questions connexes