2010年1月12日 星期二

Visual Studio 執行 Web Test Record 時,在 IE8 下會出現無法錄製網頁的問題

困擾了一個下午。
同事使用Visual Studio 2008,在錄製 Web Test 時(Windows 7 + IE 8),發現某一些網頁無法被錄製下來。

這個網頁是使用簡易的 window.open 來開啟的。已知 window.showModalDialog 很可能無法錄製的 case 並不是這次的原因。

查了許久,實在找不到原因,而且我的電腦(Win7 + IE8)也有相同的問題。就懷疑是作業系統或 IE8 的問題。因此開了一台 Windows Server 2003 (IE6) 來看,是可以錄製該「消失」的網頁。

原來, IE8為了讓瀏覽器執行「看起來」更穩定,採用了多Process 的運作。也就是不同的網頁,很可能執行在不同的 Process 下。這與 IE7 以前的運作模式大為不同。IE7 的某一個網頁掛了(例如受攻擊),就會連帶的使其他執行在同一 Process 的網頁一起掛掉,而且連救回來的時間也沒有。而IE8 一開始來就使用了2個 processes,其中一個就負責「即時救援」的任務,一旦網頁發現掛掉,立刻救援。使用者只覺得網頁一下子就掛掉,但馬上又被還原了,感覺好多了。

IE 8 這樣的新模式,固然對瀏覽器使用者非常友善,但對於 VS2008 這個在2007年底發佈的開發工具是意想不到的行為。Web Test Recorder 9.0 只會針對同一個 process 進行錄製,因此 window.open 造成新的 process ,是無法錄製的。

解法

這個問題,是要讓新的 tab 開啟時,不要新增一個 process。方式是在使用 regedit。如下步驟

  1. 執行 RegEdit
  2. 瀏覽到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\ Internet Explorer\Main
  3. 新增一個 dword,命名為TabProcGrowth,並設其值為 0
  4. 關閉所有 IE 視窗。下一次執行時就可以讀取到新的設定了。
  5. Visual Studio 2008 執行 Web Test 開始執行錄製。

完工。

     

沒有留言:

Share with Facebook