这将设置值,但不会引起回发:
function SelectValue($ddl, $val) {
$ddl.options | % {$i = 0}{ if ($_.value -eq $val) {
$ddl.selectedIndex = $i; }; $i += 1; }
}
另外,一旦我完成回发工作,是否需要添加延迟,例如:
while($ie.ReadyState -ne 4) {
start-sleep -m 100
}
HTML看起来像这样:
<select name="ddl" onchange="__doPostBack('ddl','')" language="javascript" id="ddl" class="required" style="width:100%;">
<option value="-- Please Select --">-- Please Select --</option>
<option value="Some Value">Some Value</option>
</select>
编辑:为什么要在Powershell中执行此操作? WatiN可能要简单得多(尽管我从未使用过WatiN)。但是我只是想弄清楚如何使用Powershell来进行快速,临时的,有限的网站自动化。我经常旅行并且使用不同的机器,Powershell是我可以依赖的少数常量之一。
解决方案:事实证明这很容易,而且非常有用,因为现在我可以按字面意思编写要显示的页面的脚本,进行一些选择,然后单击提交按钮,就像靠魔术一样,这很容易。我认为我与Powershell的爱恨关系正在重新回到爱情。无论如何,关键是要使用表单提交而不是onchange事件,该事件在使用javascript调用时不会触发。这是操作方法:
$frm = $ie.document.getElementById("frm");
$frm.submit();
我发现我不必等待回发。为了完整起见,单击按钮就像在javascript中一样:
$btnReport = $ie.document.getElementById("btnReport")
$btnReport.click()
最佳答案
Why would I want to do this in Powershell? Probably WatiN would be a lot simpler (though I've never used WatiN). But I'm just trying to figure out how to use Powershell to do quick, ad hoc, limited web site automation.
是的,您应该使用WatiN,但是要使用PowerShell?因此,使用PowerShell中的WatiN!
PowerShell是通用的Shell /脚本/自动化工具。为了完成任务,PowerShell利用了专用工具(COM,WMI,.NET等)。
这是一些入门。
http://poshcode.org/1108
关于asp.net - 如何选择下拉列表值,然后使用PowerShell和IE 6.0回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881032/