2016-07-21 15 views
1

ログインを自動化して特定のサイトからデータを収集しようとしています。ここに私のコードは、残念ながら、私はあなたが私は$にGMを使用する場合、私は[System .__ ComObject]が「Click」という名前のメソッドを持っていないためにメソッド呼び出しが失敗しました

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

の下に使用して要素のHTMLコードを見ることができ、次のエラーメッセージ

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 

を取得

$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); 
} 

ですOKボタン私はこれを得る

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

限り、私はこの要素が間違いなくclick()メソッドを含む必要があります参照してください。しかし何らかの理由で私はまだそれを呼び出すことに失敗している。誰かが私にそのことについて助言することはできますか?

+0

私はまだPoShでCOMオートメーションを行っていないので、答えではなくコメントとして投稿していますが、私はそれが単なる誤植であると確信しています。あなたのコードでは、.Click()メソッドを呼び出します。エラーメッセージは「クリック」を参照し、get-memberへのコールは「クリック」を綴ります。違いを見ます? –

+0

試してみましたが、これは助けになりませんでした。 Btw gmはvoid click()を示しています。これは私が知る限りClick()を意味します – KennyMacCormik

答えて

1

は、私が正常にまだ私はItemプロパティを使用しなければならない理由を理解していない、このコード

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

をクリックします()メソッドを呼び出すことができました。今はすべて正常に動作します。その場合、Itemプロパティを使用する理由についての説明に感謝します。

関連する問題