Public/Get-AllegisIDNAccessToken.ps1

function Get-AllegisIDNAccessToken ($org, $uid, $pwd, $qa)
{
    #install-module selenium first
    $i=0
    $driver=Start-sefirefox
    Enter-SeUrl -Driver $driver -Url https://$org.identitynow.com/login/login?prompt=true
    do{
        $i++
        if ($i -ge 60){return -1}
        sleep 1
        $username = Find-SeElement -Driver $Driver -Id "username"
    }until($username -ne $null)
    Send-SeKeys -Element $username -Keys $uid
    $password = Find-SeElement -Driver $driver -id "password"
    Send-SeKeys -Element $password -Keys $pwd
    $link=Find-SeElement -Driver $driver -id 'signIn'
    Invoke-SeClick -Element $link
    $i=0
    do{
        $i++
        if ($i -ge 60){return -1}
        sleep 1
        $admin=Find-SeElement -Driver $driver -id 'slpt-nav-admin'
    }until($admin -ne $null)
    Invoke-SeClick -Element $admin.where{$_.location.x -ne 0}[0]
    $i=0
    do{
        $i++
        if ($i -ge 60){return -1}
        sleep 1
        $labels=Find-SeElement -Driver $driver -TagName label
    }until($labels -ne $null)
    $inputboxes=Find-SeElement -Driver $driver -TagName input
    foreach ($Question in $labels.where{$_.location.y -ne 0})
    {
        $answer = $qa[$Question.text]
        $ib=$inputboxes.where{$_.location.y -ge $question.location.y+$question.Size.y -and $_.location.y -le $question.location.y+$question.Size.y+35}
        sleep 1
        Send-SeKeys -Element $ib[0] -Keys $answer
    }
    sleep 1
    $kba=Find-SeElement -Driver $driver -id 'slpt-strongauthn-enterkba-btn'
    Invoke-SeClick -Element $kba
    $i=0
    do{
        $i++
        if ($i -ge 60){return -1}
        sleep 1
        $loaded=Find-SeElement -Driver $driver -id 'slpt-events-dashlet-csv-btnIconEl'
    }until($loaded -ne $null)
    $i=0
    do{
        $i++
        if ($i -ge 60){return -1}
        sleep 1
        Enter-SeUrl -Driver $driver -Url https://$org.identitynow.com/ui/session?refresh=true


}until($driver.PageSource.IndexOf('{') -ne -1)
    $html=$driver.PageSource
    $json=$html.Substring($html.IndexOf('{'),$html.IndexOf('}')-$html.IndexOf('{')+1)| Convertfrom-Json
    Stop-SeDriver $driver
    return $json.accessToken
}