0

IE オブジェクトを使用して値を入力し、モーダル ダイアログを含む Web ページを送信するための簡単な Powershell スクリプトに取り組んでいます。モーダル ダイアログを呼び出し、ダイアログのいくつかのボックスをオンにしてから、閉じてページに戻ることができるようにしたいと考えています。モーダル ダイアログを呼び出すことはできますが、ダイアログが閉じられるまで、ダイアログを呼び出す行の後は何も実行されません。

パワーシェル

$ie = new-object -com "InternetExplorer.Application"
$ie.visible = $true

$ie.navigate($url); do {sleep 1} until (-not ($ie.Busy)) 

$doc = $ie.Document
$books = $doc.getElementById(“searchBooks”).click();

Javascript

var ret = window.showModalDialog('selectBooks.aspx, books, ...);

ダイアログのコンテキストでコマンドを呼び出す方法が必要です。バックグラウンドで実行して実行空間を作成しようとしましたが、どちらのソリューションでも喜びはありません

& {$books = $doc.getElementById(“searchBooks”).click();}

(ブロッキング)

$rs = [Management.Automation.Runspaces.RunspaceFactory]::CreateRunspace()
$rs.Open()

$rs.SessionStateProxy.SetVariable("doc", $doc)
$p = $rs.CreatePipeline( { $books = $doc.getElementById(“searchBooks”).click(); } )
$p.Input.Close()
$p.InvokeAsync()

(ブロッキングではありませんが、ダイアログ要素へのハンドルがありませんでした)

4

1 に答える 1

0

これは、モーダルダイアログの予期される動作です。ダイアログとやり取りしたい場合は、おそらくshowModelessDialog()それが必要です。

于 2013-01-29T06:15:04.470 に答える