Execute javascript trough Internet Explorer's com interface using PowerShell
$spans=@($ie.document.getElementsByTagName("SPAN"))
Pipe to where-object to filter the one you need (based on its attributes) and then call the click method, for example:
$span11 = $spans | where {$_.innerText -eq 'something'}
$span11.click()
Philippe
.NET/C# Developer with some experience in Java. Eager to learn from experienced peers and from my mistakes!
Updated on June 06, 2022Comments
-
Philippe almost 2 years
I am writing some Internet Explorer automation scripts using PowerShell. Here is how I start the IE com object:
$ie = New-Object -com "InternetExplorer.Application" $ie.Navigate("about:blank") $ie.visible = $true $doc = $ie.Document
So, what I would like to do is to execute some javascript on the
$doc
object. For example, I have an item on the page that has anonclick
event which executessubmitCommand('lookup')
, so I'd like to run that directly on the$doc
instead of having to find the object on the page and then calling theClick()
method on it.It would be easier as the object has no name nor id, making it very sensible to change as I can only rely on it's position on the page (eg: the 11th span item on the page).
Alternatively, how would you select elements based on their class? That would help a lot as the "button" has it's own class.
Thanks
-
Philippe over 14 yearsNot exactly the solution I was hoping for, but definitely a cleaner solution to my issue. Thanks.
-
Philippe over 14 yearsBy the way, is there any way to store the result of the where in an array? In case there are more than one result to the filtering, only the first one is returned if you store it in a variable like this?
-
Shay Levy over 14 yearsYou can wrap it in '@()': $span11 = @($spans | where {$_.innerText -eq 'something'})