背景與問題
別人寫了一個Web應用程序,使用的是ASP.NET Forms技術(shù)。其中用到了一個DropdownList控件,用戶選擇了某項后,頁面會回傳,然后在下面再動態(tài)的顯示另外一個控件,邏輯很簡單。
這是產(chǎn)生的的部分的html源碼:
復制代碼 代碼如下:
select name="eventTypeDropDown" id="eventTypeDropDown" onchange="javascript:setTimeout('__doPostBack(\'eventTypeDropDown',\'')', 0)">
option value="Exception" selected="selected" >Exception/option>
option value="Memory">Memory/option>
option value="Perf">Perf/option>
/select>
還是蠻幸運的,這個控件有id。我寫的PowerShell腳本如下:
復制代碼 代碼如下:
$ie = new-object -com "InternetExplorer.Application"
$eventType = $ie.Document.getElementById('eventTypeDropDown')
$eventType.selectedIndex=1
腳本運行后,頁面上的下來列表選中了Memory,但是因為頁面沒有回傳,下面的動態(tài)控件沒有顯示出來。
糾結(jié)了我一下午。這個時候請不要告訴我,我可以使用其它測試框架,測試工具。在這里,不想引入其它高大上的東西,只想使用IE本身去解決這個問題。
解決方案
我下意識的打開F12開發(fā)調(diào)試工具,把onchange事件的javascript代碼復制進控制臺,運行了下,頁面開始刷新,下面的動態(tài)控件加載出來了。此時看到了一縷曙光。也就是,如題:在IE ComObject中執(zhí)行Javascript可以解決這一問題。那怎么執(zhí)行呢?
復制代碼 代碼如下:
$ie.Document.parentWindow.execScript(javascript:setTimeout('__doPostBack(\'eventTypeDropDown',\'')', 0)",'')
您可能感興趣的文章:- Powershell小技巧之使用Jint引擎在PowerShell中執(zhí)行Javascript函數(shù)
- Javascript四舍五入Math.round()與Math.pow()使用介紹
- JavaScript中的pow()方法使用詳解