Html 使用Powershell在网页中填充用户名/密码

Html 使用Powershell在网页中填充用户名/密码,html,powershell,authentication,Html,Powershell,Authentication,我试图在摩托罗拉路由器的登录页面中填充用户名和密码。页面的部分HTML如下所示: 我正在使用PowerShell,并尝试获取值字符串的句柄。我可以这样做: $ie.Document.IHTMLDocument3_getElementById("moto-username").innerHTML 得到这个: …但我不知道如何设置变量。这是由于的嵌套造成的吗 我尝试过各种形式,例如: $iePPM.Document.IHTMLDocument3_getElementById("moto-u

我试图在摩托罗拉路由器的登录页面中填充用户名和密码。页面的部分HTML如下所示:


我正在使用PowerShell,并尝试获取值字符串的句柄。我可以这样做:

$ie.Document.IHTMLDocument3_getElementById("moto-username").innerHTML
得到这个:


…但我不知道如何设置变量。这是由于
的嵌套造成的吗

我尝试过各种形式,例如:

$iePPM.Document.IHTMLDocument3_getElementById("moto-username") = "myusername"
……但一切都不起作用


蒂亚

你不是在说你是如何发现/抓取你的元素的

如果你这么做了

。。。什么作为元素返回

示例:

为您的网站-当然。浏览站点表单元素,而不是Internet Explorer元素

$url = 'https://pwpush.com'

($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)   

<#
    StatusCode        : 200
    StatusDescription : OK
    Content           : <!DOCTYPE html>
                        <html>
...
#>



($Form = $FormElements.Forms[0]) | 
Format-List -Force

<#
    Id     : new_password
    Method : post
    Action : /p
    Fields : ...}
#>

$Form | 
Get-Member

<#
       TypeName: Microsoft.PowerShell.Commands.FormObject

    Name        MemberType   Definition                                                        
    ----        ----------   ----------                                                        
    Equals      Method       bool Equals(System.Object obj)                                    
    GetHashCode Method       int GetHashCode()                                                 
    GetType     Method       type GetType()                                                    
    ToString    Method       string ToString()                                                 
    Action      Property     string Action {get;}                                              
    Fields      Property     System.Collections.Generic.Dictionary[string,string] Fields {get;}
    Id          Property     string Id {get;}                                                  
    Method      Property     string Method {get;}                                              
    MSDN        ScriptMethod System.Object MSDN();
#>

$Form.Fields

<#
    Key                          Value                                                                                   
    ---                          -----                                                                                   
    utf8                         ✓                                                                                       
    authenticity_token           2mebmGbAJsseDW+/TeTBXAelq1s8kH5Zgb6W14Pxtba6CyWsAM4SfVqdJWdVmu5HjxIGUCWjEGhy6fLTB38UhA==
    password_payload             Enter the Password to be Shared                                                         
    password_expire_after_days   7                                                                                       
    password_expire_after_views  5                                                                                       
    password_deletable_by_viewer on                                                                                      
    commit                       Push it!  
根据您的BookinAgent评论更新

$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent'))
#通过字符串匹配获取元素
$FormElements.allegments|
其中{$\.TagName-eq“input”}
选择字符串-模式“BookingAgent”
#获取所有页面按钮元素
$FormElements.allegments|
其中{$\.TagName-eq“Button”}
选择字符串-模式“BookingAgent”

您并不是在说如何发现/抓取元素

如果你这么做了

。。。什么作为元素返回

示例:

为您的网站-当然。浏览站点表单元素,而不是Internet Explorer元素

$url = 'https://pwpush.com'

($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)   

<#
    StatusCode        : 200
    StatusDescription : OK
    Content           : <!DOCTYPE html>
                        <html>
...
#>



($Form = $FormElements.Forms[0]) | 
Format-List -Force

<#
    Id     : new_password
    Method : post
    Action : /p
    Fields : ...}
#>

$Form | 
Get-Member

<#
       TypeName: Microsoft.PowerShell.Commands.FormObject

    Name        MemberType   Definition                                                        
    ----        ----------   ----------                                                        
    Equals      Method       bool Equals(System.Object obj)                                    
    GetHashCode Method       int GetHashCode()                                                 
    GetType     Method       type GetType()                                                    
    ToString    Method       string ToString()                                                 
    Action      Property     string Action {get;}                                              
    Fields      Property     System.Collections.Generic.Dictionary[string,string] Fields {get;}
    Id          Property     string Id {get;}                                                  
    Method      Property     string Method {get;}                                              
    MSDN        ScriptMethod System.Object MSDN();
#>

$Form.Fields

<#
    Key                          Value                                                                                   
    ---                          -----                                                                                   
    utf8                         ✓                                                                                       
    authenticity_token           2mebmGbAJsseDW+/TeTBXAelq1s8kH5Zgb6W14Pxtba6CyWsAM4SfVqdJWdVmu5HjxIGUCWjEGhy6fLTB38UhA==
    password_payload             Enter the Password to be Shared                                                         
    password_expire_after_days   7                                                                                       
    password_expire_after_views  5                                                                                       
    password_deletable_by_viewer on                                                                                      
    commit                       Push it!  
根据您的BookinAgent评论更新

$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent'))
#通过字符串匹配获取元素
$FormElements.allegments|
其中{$\.TagName-eq“input”}
选择字符串-模式“BookingAgent”
#获取所有页面按钮元素
$FormElements.allegments|
其中{$\.TagName-eq“Button”}
选择字符串-模式“BookingAgent”

我成功地填充了用户名和密码字段,并用以下命令单击按钮:

$ie.Document.IHTMLDocument3_getElementById(“loginUsername”).value=“admin” $ie.Document.IHTMLDocument3\u getElementById(“loginPassword”).value=“密码” $Link=$ie.Document.getElementsByTagName(“输入”)|其中对象{$\类型-eq'submit'}
$Link.click()

我能够成功地填充用户名和密码字段,并用以下命令单击按钮:

$ie.Document.IHTMLDocument3_getElementById(“loginUsername”).value=“admin” $ie.Document.IHTMLDocument3\u getElementById(“loginPassword”).value=“密码” $Link=$ie.Document.getElementsByTagName(“输入”)|其中对象{$\类型-eq'submit'}
$Link.click()

抱歉,忘记添加我得到的:抱歉,忘记添加我得到的:要查看元素,我只需右键单击用户名字段并使用IE选择“Inspect element”。我粘贴的选择减去一些额外的div就是显示的内容。我在您的加拿大航空公司示例中看到,bookingAgent字段嵌套在几个级别上,这与此类似。让我消化一下你写的东西。谢谢postanote,在加拿大航空公司的示例中,您将如何填充bookingagent字段?谢谢。那是一个输入框和一个按钮。我提供的代码中已经包含了这方面的代码。只要过滤一下就行了。请看我的更新。好的,我现在可以得到以下输出:@{innerHTML=;innerText=;outerHTML=;outerText=;tagName=INPUT;onfocus=onfocussername();onblur=onBlurUsername();class=moto用户名输入;value=username;name=loginUsername}我会使用$ie.Document.ihtmldocument\u getElementById来设置它吗?要查看元素,我只是在用户名字段中右键单击并使用IE选择“Inspect element”。我粘贴的选择减去一些额外的div就是显示的内容。我在您的加拿大航空公司示例中看到,bookingAgent字段嵌套在几个级别上,这与此类似。让我消化一下你写的东西。谢谢postanote,在加拿大航空公司的示例中,您将如何填充bookingagent字段?谢谢。那是一个输入框和一个按钮。我提供的代码中已经包含了这方面的代码。只要过滤一下就行了。请看我的更新。好的,我现在可以得到这个输出:@{innerHTML=;innerText=;outerHTML=;outerText=;tagName=INPUT;onfocus=onfocussername();onblur=onBlurUsername();class=moto用户名输入;value=username;name=loginUsername}我会使用$ie.Document.ihtmldocument\u getElementById来设置它吗?
$url = 'https://www.aircanada.com/ca/en/ado/profile/sign-in.html'

# Get form elements
($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)  

# List all form objects 
$FormElements.Forms
$FormElements.InputFields
$FormElements.ParsedHtml
$FormElements.Content
$FormElements.Scripts


# Get all page source elements
$FormElements.AllElements

$FormElements.AllElements | 
Select-Object -Expand OuterText

$FormElements.AllElements | 
Select-Object -Expand InnerText


# Get elements by string match
$FormElements.AllElements | 
Where{$_.TagName -eq "input"}

# Get all page button elements
$FormElements.AllElements | 
Where{$_.TagName -eq "Button"}

$FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-Object outerHTML

$FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-Object -Expand OuterText

$FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-Object -Expand InnerText


# Get only the submit button that matches the criteria
($FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-Object -Property outerHTML) -Match 'SIGN IN'

$FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-Object -Property * | 
Where innerText -eq 'SIGN IN'
$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent')
<#
# Results

Id           Method Action                              Fields                                                                                
--           ------ ------                              ------                                                                                
             get    /ca/en/ado/home/search-results.html {[searchbox_01, ]}                                                                    
             get    /ca/en/ado/home/search-results.html {[searchbox_011, ]}                                                                   
             get    /ca/en/ado/home/search-results.html {[searchbox_0111, ]}                                                                  
adoLoginForm post                                       {[agencyIATA, ], [agencyID, ], [bookingAgent, ], [password, ], [rememberAgencyInfo, ]}
adoLoginForm post                                       {[agencyIATA, ], [agencyID, ], [bookingAgent, ], [password, ], [rememberAgencyInfo, ]}
bookingAgent   
#>



# Get elements by string match
$FormElements.AllElements | 
Where{$_.TagName -eq "input"} | 
Select-String -Pattern 'BookingAgent'



# Get all page button elements
$FormElements.AllElements | 
Where{$_.TagName -eq "Button"} | 
Select-String -Pattern 'BookingAgent'