2010-01-20 74 views
8

我们有一个基于硒网格的自动化测试集群。如何以编程方式确定从脚本中安装的IE版本

为了管理集群,我构建了一个Rake(Ruby)任务集合,可以启动,重新启动,ping和停止节点。我在包括IE6,IE7和IE8在内的许多浏览器上测试我们的应用程序。这意味着群集中的每个节点都必须知道安装了哪个版本的IE,以便它可以声明正确的硒网格配置文件名称(例如:"IE6 on Windows XP""IE8 on Windows Vista"),以便可以针对这些浏览器编写某些测试。

我的问题

我想在这里削减的配置工作。如何以编程方式确定当前系统上正在运行哪个版本的IE?我曾尝试以下方法:

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

但这只是返回的是安装了Windows安装程序即版本,所以IE不会在这个列表中显示出来。

理想情况下,我希望能够从Rake脚本内部或从Rake脚本中调用至少一些内容。

回答

2

您可以使用WMI,我知道它不是rake脚本,但可以运行脚本(或创建.NET应用程序)并将结果提供给您的应用程序。

这是一种黑客,但至少它会工作。以下是来自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 

完全Source

一旦你有了这个信息,你可以通过使用命令行的信息,您耙脚本。

rake YourScript[<argument from vbscript>] 

编辑:您可以复制/将此代码粘贴到一个文件,将其命名为whatever.vbs,并使用CSCRIPT命令来执行脚本。

CSCRIPT // NOLOGO ie_version.vbs

+0

真棒,这似乎工作,但是Wscript.Echo输出到窗口。有没有简单的方法输出到标准输出? – Maciek 2010-01-20 21:41:24

+0

看到编辑,是你想要的? – 2010-01-20 21:45:30

+0

谢谢!我翻阅了cscript选项,并添加了// Nologo以省略MS的版权信息。 – Maciek 2010-01-20 21:51:02

1

尝试此任何版本的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) 
相关问题