Вы не говорите, как вы находите / просматриваете свои элементы.
Если вы сделали это ...
... что возвращается как элементы?
Пример (ы):
Для вашего сайта - чтобы быть уверенным. Навигация по элементам формы сайта, а не по элементам Inte rnet 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!
Или просто просмотр источника сайта на странице
<#
<span class='note'>
(whichever comes first)
</span>
...
#>
# so you end up here
Clear-Host
$password = '1234'
$loginUrl = 'https://pwpush.com'
$ie = New-Object -com internetexplorer.application
$ie.visible = $true
$ie.navigate($loginUrl)
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1 }
($ie.document.getElementById('password_payload') | select -first 1).value = $password
Start-Sleep -Seconds 1
$ie.Document.getElementsByName('commit').Item().Click();
Start-Sleep -Seonds 1
Вы также можете выполнить сопоставление строк, чтобы найти элементы для делать вещи, чтобы. Например, на этом мульти-странице c страница
$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'
Обновление в соответствии с вашим комментарием BookinAgent
$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'