方法调用失败,因为 [System.__ComObject] 不包含名为“Click”的方法

Ken*_*mik 3 powershell internet-explorer

我正在尝试自动登录并从特定站点收集数据。这是我的代码

$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);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误消息

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
Run Code Online (Sandbox Code Playgroud)

您可以在下面看到我使用的元素的 HTML 代码

<input name="submit" accesskey="l" value="Login" tabindex="4" type="submit" />
Run Code Online (Sandbox Code Playgroud)

当我在 $okbutton 上使用 gm 时,我得到了这个

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 ()
Run Code Online (Sandbox Code Playgroud)

据我所知,这个元素肯定是并且必须包含 click() 方法。但出于某种原因,我仍然无法调用它。任何人都可以就此事给我建议吗?

Ken*_*mik 5

我已经成功地使用此代码调用了 Click() 方法

$ie.Document.getElementsByName('submit')[0].Item().Click();
Run Code Online (Sandbox Code Playgroud)

仍然不明白我将使用 Item 属性的原因。现在一切正常。将不胜感激解释为什么在这种情况下应使用 Item 属性。