0

是否可以实现以下powershell脚本?

目的是稍后调用脚本块以获取 html 控件。

$sites = @{
    site1= @{ 
        url = "......."; 
        inputUserID = { $doc.getElementsByID("username"]) }; #Some code to get the html input control
        inputPassword = { $doc.getElementsByName("passowrd"]) }; #Some code to get the html input control
    };
    .....
}

$ie = New-Object -ComObject "InternetExplorer.Application"
$ie.navigate($sites[$site]["url"])
$ie.visible = $true
while ($ie.busy) { start-sleep -milliseconds 1000; }

... #Get the input controls and fill the values

问题已更新。够清楚吗?应该不难理解。

4

2 回答 2

0

从 PowerShell 中的脚本块获取闭包的方法是:

{  #code here  }.GetNewClosure()

从上面的代码中很难判断这是否会有所帮助,但这就是您所要求的。

于 2012-07-10T01:12:37.840 回答
0

您需要遍历每个站点的信息。我不确定您如何将 DOM 选择器与 IE COM 对象一起使用,所以我猜到了代码的那部分:

$sites = @{
    site1= @{ 
        url = "......."; 
        inputUserID = ( 'doc.getElementsByID("username")' ); #Some code to get the html input control
        inputPassword = ( 'doc.getElementsByName("passowrd")' ); #Some code to get the html input control
    };
    .....
}

$sites.Keys | 
    ForEach-Object {
        $siteInfo = $sites[$_]
        $ie = New-Object -ComObject "InternetExplorer.Application"
        $ie.navigate($siteInfo.url)
        $ie.visible = $true
        while ($ie.busy) { start-sleep -milliseconds 1000; }
        ... #Get the input controls and fill the values
        $usernameElement = $ie.someFunction( $siteInfo.inputUserID )
        $passwordElement = $ie.someFunction( $siteInfo.inputPassword )
    }
于 2012-07-11T00:36:21.267 回答