2009-05-19 7 views
2

Cela va régler la valeur, mais ne provoque pas une publication:Comment sélectionner déroulante valeur de liste, puis postback avec PowerShell et IE 6.0

function SelectValue($ddl, $val) { 
    $ddl.options | % {$i = 0}{ if ($_.value -eq $val) { 
      $ddl.selectedIndex = $i; }; $i += 1; } 

} 

De plus, une fois que je reçois le travail de postback, aurai-je besoin ajouter un délai, par exemple:

while($ie.ReadyState -ne 4) { 
     start-sleep -m 100 
    } 

Le HTML ressemble à ceci:

<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> 

Edit: Pourquoi voudrais-je faire cela dans Powershell? Probablement WatiN serait beaucoup plus simple (bien que je n'ai jamais utilisé WatiN). Mais j'essaie juste de comprendre comment utiliser Powershell pour faire de l'automatisation de site web rapide, ad hoc et limitée. Je voyage beaucoup et j'utilise différentes machines, et Powershell est l'une des rares constantes sur lesquelles je peux compter.

Solution: Cela est avéré être facile et il est très utile parce que maintenant je peux littéralement le script d'une page à venir, faire quelques sélections et cliquez sur un bouton d'envoi, comme par magie, et il est facile. Je pense que ma relation amour/haine avec Powershell retourne à l'amour. Quoi qu'il en soit, la clé est d'utiliser le formulaire submit au lieu d'utiliser l'événement onchange, qui est connu pour ne pas se déclencher quand il est appelé avec javascript. Voici comment le faire:

$frm = $ie.document.getElementById("frm"); 
$frm.submit(); 

J'ai trouvé que je n'ai pas eu à attendre les publications. Pour être complet, cliquer sur un bouton est comme il est en javascript:

$btnReport = $ie.document.getElementById("btnReport") 
$btnReport.click() 
+0

Il doit y avoir une meilleure façon de faire ce que vous essayez d'accomplir ... l'objet COM IE est méchant méchant méchant –

Répondre

1

Pourquoi voudrais-je faire dans Powershell? Probablement WatiN serait beaucoup plus simple (bien que je n'ai jamais utilisé WatiN). Mais je suis juste en train d'essayer de savoir comment utiliser Powershell pour faire rapidement, automatisation de site Web ad hoc, limitée.

Oui, vous devriez utiliser WatiN, mais vous voulez utiliser PowerShell? Alors utilisez WatiN de PowerShell!

PowerShell est un shell général/scripts/outil d'automatisation. Pour faire avancer les choses, PowerShell utilise des outils spéciaux (COM, WMI, .NET, etc.).

Voici quelque chose pour commencer.

http://poshcode.org/1108

Questions connexes