Powershell click on javascript link

2020-08-01 12:52发布

问题:

Here is hyperlink code

<a href="javascript:void(1)" onclick="server_playOn(17,2, 'est', this);">
                     Example  
                  </a>

Here is my current powershell code.

Get-Process iexplore | Foreach-Object { $_.CloseMainWindow() }
$username = "user" 
$password = "pass"
$ie = New-Object -comobject InternetExplorer.Application
$ie.visible=$true
$ie.FullScreen=$true
$ie.navigate("http://www.example.com/en/index.shtml")
while($ie.ReadyState -ne 4) {start-sleep -m 100}
trap [Exception] 
{ 
    # This will happen if you're already logged in 
    if($_.Exception.Message -eq "Property 'value' cannot be found on this object; make sure it exists and is settable." -Or $_.Exception.Message -eq "You cannot call a method on a null-valued expression.") 
    { 
        # Try and skip this error 
        continue; } 
    else { 
        # Fail for other Exceptions 
    Write-Host -ForegroundColor Red $_.Exception.Message; } 
    }

##if not logged in
Write-Host -ForegroundColor Green "Logging into example.com";
$ie.document.getElementById("username").value = "$username"
$ie.document.getElementById("pass").value = "$password"
$ie.document.getElementById("frmLogin").submit()
start-sleep 5
$ie.navigate("http://www.example.com/en/link5.shtml")
##need to add click code here

回答1:

Add these lines at the end of the script:

$link = @($ie.Document.getElementsByTagName('A')) | Where-Object {$_.innerText -eq 'Example'}
$link.click()


回答2:

Another way could be

$ie.Document.parentWindow.execScript($Javascript, "javascript")