2017-01-17 14 views
0

私は、オプションが選択されるまでアクティブにならないボタンを持つウェブサイトを持っています。しかし、私はオプションを選択し、物理的にクリックしない限り、ボタンはまだアクティブにならない。私は、PowerShellスクリプトにsend-key vbスタイルを使用することを考えていましたが、フォーカスの問題のために推奨されていないと聞いていました。 [System.Windows.Forms.SendKeys]::SendWait(“{ENTER}”)Powershell Webオートメーション

これは私が試したことであり、私にとってはうまくいきませんでした。 (私はリストのオプションを変更することができますが、グレー表示されているのでボタンをクリックすることはできません)。私はxml 1.0のいくつかのタイプを使用して参照してください、または何かを行うことができる"Go_NextPage(document.FORM.Class)"

のPowershell:

$ie = New-Object -ComObject "InternetExplorer.Application" 
$ie.navigate("http://website/address") 
$ie.visible =$true 

While ($ie.busy -eq $true){ 
[System.Threading.Thread]::Sleep(1000) 
} 
$doc = $ie.document 
$type = $doc.getElementById("class") 
#$type.click() << was seeing if i could click it even though its not a button. 
$type.value = "7" 

$bt = $doc.getElementsByTagName("input") | 
Where-Object {$_.Name -eq "Class_Button"} 
$bt.click() # but is grayed out 

HTMLのCODE:以下

<td> 
<select name="Class" id="Class" size="1"> 
<script language="JavaScript" type="text/javascript"> 
//<![CDATA[ 
AdrTypeList(); 
//]]> 
</script> 
    <option value="2">Some </option> 
    <option value="3">Thing </option> 
    <option value="7">File 
</option></select> 
<input type="button" class="ButtonEnable" name="Class_Button"  
id="Class_Button" value="Set " onclick="Go_NextPage(document.FORM.Class)"> 
</td> 

答えて

0

私の答えは私のローカルマシン上のサンプルPowerShellとHTMLをテストする私の経験に基づいています。私が下で言及した変更は私のマシン上で動作しますが、ここのボタンをクリックするだけで何もしないので、あなたのために100%保証することはできません。


私は「getElementByIdを」に渡される文字列は大文字と小文字が区別されることをかなり確信していますので、「クラス」は「クラス」に異なっています。

私のコードのテストでは、大文字を変更するまで、最初はnullオブジェクトを返します。

次に、そのメソッドはコレクション(この場合はコレクション)を返しますので、valueプロパティを設定するには特定のオブジェクトを参照する必要があります($type[0].value = "7"

最後に、 'getElementByTagName'によって返されたオブジェクトが、期待していたすべての情報(またはメソッド)を提供していないようです。特に私にとっては、Name値もクリックメソッドもありませんでした。代わりにタグ名とステートメントを使用しての

することは、私が名前に直接行くことをお勧めしたい:

$doc.IHTMLDocument3_getElementsByName('Class_Button') 

$doc.getElementsByName('Class_Button')が私のために動作しませんでした、と私は人々をたくさん見てきました使用することをお勧めデフォルトではITHMLDocument3のメソッドです)。

これは、あなたのコードを正当なものにすることです。行を実行し、返されると予想されるものが実際に返されていることを再度確認し、変数に代入せずにメソッドを実行して、プロンプトに正しく出力するかどうかを確認してください。

関連する問題