2010-01-20 80 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) 
相關問題