4

私たちが作成した、一時的な ssl 証明書を持つ Web ページをテストしようとしています。問題は、ページに移動すると、ssl 証明書が無効であるという IE セキュリティ警告が表示され、ページを閉じるための 2 つのリンクが表示されることです。もう 1 つはページに進みます。PowerShell を使用して IE を開き、ssl 警告ページのリンクをクリックすることができましたが、今度はユーザー名とパスワードの入力ボックスに入力してからログイン ボタンをクリックする必要があります。

$url = "res://ieframe.dll/invalidcert.htm?SSLError=50331648#https://10.2.2.1:8050/showme.do"
$ie = New-Object -comobject InternetExplorer.Application 
$ie.visible = $true 
$ie.silent = $true 
$ie.Navigate( $url )
while( $ie.busy){Start-Sleep 1} 
$secLink = $ie.Document.getElementsByTagName('A') | Where-Object {$_.innerText -   eq 'Continue to this website (not recommended).'} 
$secLink.click() 
$ie.Document.getElementsByType("input") | where { $.Name -eq "j_username" }.value = "user"
$ie.Document.getElementsByName("input") | where { $.Name -eq "j_password" }.value = "password"
$loginBtn = $ie.Document.getElementsById('input') | Where-Object {$_.Type -eq 'button' -and $_.Value -eq 'LoginButton'} 
$loginBtn.click() 

現在、ページは開いていますが、入力フィールドが入力されていないか、ボタンがクリックされていません。何らかのループまたは while ステートメントが必要ですか?

ありがとう

4

3 に答える 3

3

リンクをクリックしたら、ページの読み込みが完了するまで待つ必要があります。

$url = "res://ieframe.dll/invalidcert.htm?SSLError=50331648#https://10.2.2.1:8050/showme.do"
$ie = New-Object -comobject InternetExplorer.Application 
$ie.visible = $true 
$ie.silent = $true 
$ie.Navigate( $url )
while( $ie.busy){Start-Sleep 1} 
$secLink = $ie.Document.getElementsByTagName('A') | Where-Object {$_.innerText -   eq 'Continue to this website (not recommended).'} 
$secLink.click() 
while( $ie.busy){Start-Sleep 1}
$ie.Document.getElementsByType("input") | where { $.Name -eq "j_username" }.value = "user"
$ie.Document.getElementsByName("input") | where { $.Name -eq "j_password" }.value = "password"
$loginBtn = $ie.Document.getElementsById('input') | Where-Object {$_.Type -eq 'button' -and $_.Value -eq 'LoginButton'} 
$loginBtn.click() 
于 2012-06-04T07:41:46.713 に答える
3
Write-Output "- Kill all IE windows"
get-process iexplore | stop-process -Force
Start-Sleep -s 1

指定された URL と暗号化されたファイルから取得したパスワードで IE を開く関数

function OpenIE([string]$url, [string]$p)
{

指定された URL で Internet Explorer を開きます

$wshell = New-Object -com WScript.Shell
$wshell.Run("iexplore.exe $url")
Start-Sleep 1

ユーザー資格情報を IE に送信する

$wshell.sendkeys("+{TAB}")
$wshell.sendkeys("username")
$wshell.sendkeys("{TAB}")
$wshell.sendkeys($p)
$wshell.sendkeys("{ENTER}")
}

$credentialsfile = "C:\temp\credfile.txt" 

資格証明ファイルが存在するかどうかを確認します

if (Test-Path $credentialsfile)
{  

暗号化されたファイルから資格情報を取得する

$encp = get-content $credentialsfile | convertto-securestring 
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($encp) 
$p = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr) 
remove-variable encp,ptr 
}else{

認証情報を要求し、暗号化されたファイルに保存します

$creds = Get-Credential –credential DOMAIN\user
$encp = $creds.password 
$encp |ConvertFrom-SecureString |Set-Content $credentialsfile
}

Write-Output "- open IE"
OpenIE "http://www.yoururlhere.com" $p
于 2012-08-02T14:46:45.990 に答える
0

コードプレックスで PowerShell 用の (無料の) Windows Automation モジュールのようなものを使用すると、おそらくはるかに簡単に作業できることがわかります。

WASP は、ウィンドウやコントロールの選択、マウス イベントやキーボード イベントの送信など、Windows オートメーション タスク用の PowerShell スナップインです。Select-Window、Select-Control、Send-Keys、Send-Click、Get-WindowPosition、Set-WindowPosition、Set-WindowActive、Remove-Window などの自動化コマンドレットがあります。

私たちの目標は、特殊な (そして高価な) スクリプト ツールに頼ることなく、ほとんどの Windows GUI オートメーション スクリプトを PowerShell 内から実行できるようにすることです。

http://wasp.codeplex.com/

于 2012-05-03T17:54:45.430 に答える