We help IT Professionals succeed at work.

Powershell Get item of html dropdown?

janhoedt
janhoedt asked
on
Hi,

This is exactly what I want to do:
https://stackoverflow.com/questions/15150397/powershell-select-drop-down-menu-from-web-page 

= selecting an item in a dropdown list of html (reporting server)

Now my link is
http://OurReportingServer/Reports/Pages/Report.aspx?ItemPath=%2fConfigMgr_PRD%2fSoftware+Updates+-+C+Deployment+States%2fStates+1+-+Enforcement+states+for+a+deployment

And what I want to be selected is
($dropdown | where {$_.innerHTML -like "Updates - PILOT*"}).Selected = $true

How can I achieve this?
J.
Comment
Watch Question

Jose Gabriel Ortega CastroCEO Faru Bonon IT /Top Rated Freelancer on Upwork / Photographer
Awarded 2018
Distinguished Expert 2018

Commented:
Can you post the HTML file? and remove all the not relevant information for it like enterprise number change them for dummies and post the HTML file. We can do web scrapping for nothing, the link doesn't open.

We need at least the ID of the dropdown
Most Valuable Expert 2019
Most Valuable Expert 2018
Commented:
Try this:
$ReportUrl = 'http://OurReportingServer/Reports/Pages/Report.aspx?ItemPath=%2fConfigMgr_PRD%2fSoftware+Updates+-+C+Deployment+States%2fStates+1+-+Enforcement+states+for+a+deployment'
$DropdownText = 'Updates - PILOT*'

$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.Visible = $true
$ie.Navigate($ReportUrl)
While ($ie.Busy) {Start-Sleep -Milliseconds 500}
$Option = $ie.Document.getElementsByTagName('OPTION') | Where-Object {$_.text -like $DropdownText}
$Option.selected = $true
While ($ie.Busy) {Start-Sleep -Milliseconds 500}
$Submit = $ie.Document.getElementsByTagName('INPUT') | Where-Object {$_.type -eq 'submit'}
$Submit.click()

Open in new window

Author

Commented:
Works great! However, the selection method should be different because the text appears to be  (in the result of the query)
"Updates - PILOT - November - Updates - PILOT - November", so it is there twice and when selecting this $Option the submit does not find it.
Don't know why the text does this (enumerating twice) but tried to select on value

Tried  $option =  $($ie.Document.getElementsByTagName('OPTION') | Where-Object {$_.text -like $DropdownText}).uniquenumber but that does not work

Any ideas?

Author

Commented:
I see there is an option $option.uniqueNumber  but not suer how to fit this all together.
Most Valuable Expert 2019
Most Valuable Expert 2018

Commented:
Sorry, can't quite follow your description of what's happening.
Does the script produce any errors, or is just IE / the site not cooperating?
What's the output when you just paste the following into a PS console?
$ReportUrl = 'http://OurReportingServer/Reports/Pages/Report.aspx?ItemPath=%2fConfigMgr_PRD%2fSoftware+Updates+-+C+Deployment+States%2fStates+1+-+Enforcement+states+for+a+deployment'
$DropdownText = 'Updates - PILOT*'
$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.Visible = $true
$ie.Navigate($ReportUrl)
While ($ie.Busy) {Start-Sleep -Milliseconds 500}
$Option = $ie.Document.getElementsByTagName('OPTION') | Where-Object {$_.text -like $DropdownText}
$Option | select inner*, outer*, text

Open in new window

Author

Commented:
Never mind, overlooked something. Works great, thanks a lot!

Author

Commented:
Sidenote: any idea howto make this possible in an htlml only context (so <a> </a>)?
Most Valuable Expert 2019
Most Valuable Expert 2018

Commented:
Similar to the above, only the TagName would be "A".

Author

Commented:
Think you misunderstood. I'd need to make a webpage which is generated by Powershell. The link itself should point to the url which triggers the dropdownbox and submits.
Probably some javascript or something else to include into the webpage?