代码之家  ›  专栏  ›  技术社区  ›  mark

如何访问从invoke webrequest的响应中获取的html元素的方法和属性?[复制品]

  •  0
  • mark  · 技术社区  · 5 年前

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

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

    很遗憾,我收到了以下错误消息

    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
    

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

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

    当我在$OK按钮上使用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 ()
    

    据我所见,这个元素肯定包含click()方法。但不知为什么我还是没能打电话给你。有人能告诉我那件事吗?

    0 回复  |  直到 8 年前
        1
  •  4
  •   KennyMacCormik    8 年前

    我成功地用这段代码调用了click()方法

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

    仍然不明白我使用物品属性的原因。现在一切正常。如能解释为何在这种情况下使用物品属性,我们将不胜感激。