一起学习网 一起学习网


PowerShell中执行Javascript的方法示例

网络编程 PowerShell中执行Javascript的方法示例 06-21

背景与问题

别人写了一个Web应用程序,使用的是ASP.NET Forms技术。其中用到了一个DropdownList控件,用户选择了某项后,页面会回传,然后在下面再动态的显示另外一个控件,逻辑很简单。

这是产生的的部分的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,但是因为页面没有回传,下面的动态控件没有显示出来。

纠结了我一下午。这个时候请不要告诉我,我可以使用其它测试框架,测试工具。在这里,不想引入其它高大上的东西,只想使用IE本身去解决这个问题。

解决方案

我下意识的打开F12开发调试工具,把onchange事件的javascript代码复制进控制台,运行了下,页面开始刷新,下面的动态控件加载出来了。此时看到了一缕曙光。也就是,如题:在IE ComObject中执行Javascript可以解决这一问题。那怎么执行呢?

$ie.Document.parentWindow.execScript(javascript:setTimeout('__doPostBack('eventTypeDropDown','')', 0)",'')

Powershell使用嵌套哈希表实例 嵌套哈希表的2种写法例子
嵌套哈希表对于多维数组是一个更好选择。这种存储方式将更易于管理。请看:$person=@{}$person.Name='Weltner'$person.Id=12$person.Address=@{}$person.Address.Street='Canyon

Powershell创建数组正确、更快的方法
通常当新的对象添加到一个数组中,根据经验你最担心其性能问题。下面第一个例子将告诉你一个错误的操作方法:Measure-Command{$ar=@()for($x=0;$x-lt10000;$x++

PowerShell调用Web测试工具Selenium实例
什么是SeleniumSelenium是一款著名的web应用程序测试工具,它能通过在浏览器中模拟用户的动作来完成测试,其api支持java,c#,python,ruby,php,perl,javascri


编辑:一起学习网

标签:控件,嵌套,数组,页面,测试工具