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