2016-07-21 3 views
1

Ich versuche, das Anmelden und Sammeln von Daten von einer bestimmten Site zu automatisieren. Hier ist mein CodeDer Aufruf der Methode ist fehlgeschlagen, weil [System .__ ComObject] keine Methode mit dem Namen "Click" enthält.

$ie = New-Object -ComObject InternetExplorer.Application; 
$ie.Visible = $true; 
$ie.Navigate("somesite"); 
while($ie.busy){Start-Sleep 1;} 
while($ie.ReadyState -ne 4){Start-Sleep 1;} 
if($ie.Document -ne $null) 
{ 
    $usertextbox = $ie.Document.GetElementById('username'); 
    $passtextbox = $ie.Document.GetElementById('password'); 
    $usertextbox.value = "$user"; 
    $passtextbox.value = "$pass"; 
    $okbutton = $ie.Document.getElementsByName('submit')[0]; 
    $okbutton.Click($false); 
} 

Leider bekomme ich folgende Fehlermeldung

Method invocation failed because [System.__ComObject] does not contain a method named 'Click'. 
At line:17 char:5 
+  $okbutton.Click($false); 
+  ~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (Click:String) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : MethodNotFound 

Sie HTML-Code des Elements sehen kann ich unter

<input name="submit" accesskey="l" value="Login" tabindex="4" type="submit" /> 

Wenn ich gm Verwendung auf dem $ okbutton Ich bekomme diese

PS C:\Windows\system32> $okbutton | gm 


    TypeName: System.__ComObject#{3050f57d-98b5-11cf-bb82-00aa00bdce0b} 

Name       MemberType Definition              
----       ---------- ----------              
addBehavior     Method  int addBehavior (string, Variant)        
addFilter     Method  void addFilter (IUnknown)          
appendChild     Method  IHTMLDOMNode appendChild (IHTMLDOMNode)       
applyElement     Method  IHTMLElement applyElement (IHTMLElement, string)    
attachEvent     Method  bool attachEvent (string, IDispatch)       
blur       Method  void blur()             
clearAttributes    Method  void clearAttributes()           
click      Method  void click() 

Soweit ich sehe, ist dieses Element definitiv und muss click() Methode enthalten. Aber aus irgendeinem Grund kann ich es immer noch nicht nennen. Kann mir jemand diesbezüglich etwas sagen?

+0

Posting als Kommentar und nicht als Antwort, weil ich noch keine COM-Automatisierung mit PoSh machen muss, aber ich bin mir ziemlich sicher, dass es nur ein Tippfehler ist. In Ihrem Code rufen Sie die Methode .Click() auf. Die Fehlermeldung bezieht sich auf 'Klicken' und Ihr Aufruf zu 'Get-Member' Spells 'Klick'. Sieh den Unterschied? –

+0

Versuchte Klicken, aber das half nicht. Btw gm zeigt void click(), was soviel wie Click() bedeutet – KennyMacCormik

Antwort

1

Ich habe es geschafft, mit diesem Code das Click() -Methode erfolgreich zu nennen

$ie.Document.getElementsByName('submit')[0].Item().Click(); 

immer noch nicht verstehen, den Grund werde ich Item-Eigenschaft verwenden. Jetzt funktioniert alles gut. Ich bin dankbar für die Erklärung, warum Item Eigentum in diesem Fall verwendet werden soll.

Verwandte Themen