functions/private/New-ChurchSession.ps1

function New-ChurchSession {
    param (
        [Parameter(Mandatory = $true)]
        [string] $UserName,
        [Parameter(Mandatory = $true)]
        [string] $Password
    )
    Write-Host "[INF] [Selenium] Starting up Selenium using Chrome driver..."
    $uri = Get-ChurchConfig -Action "Login"
    $driver = Start-SeChrome -Headless

    Write-Host "[INF] [Selenium] Navigate to $uri..."
    Enter-SeUrl -Url $uri -Driver $driver

    Write-Host "[INF] [Selenium] Entering credentials..."
    $username_input = Find-SeElement -Driver $driver -Name 'username' -Wait -Timeout 2
    $password_input = Find-SeElement -Driver $driver -Name 'password' -Wait -Timeout 2
    $submit_button = Find-SeElement -Driver $driver -Id 'sign-in' -Wait -Timeout 2

    $username_input.Clear()
    $password_input.Clear()
    
    $username_input.SendKeys($UserName)
    $password_input.SendKeys($Password)

    Write-Host "[INF] [Selenium] Submitting credentials..."
    $submit_button.Click()
    Start-Sleep -Seconds 2
    
    $cookies = $driver.Manage().Cookies.AllCookies
    $session = Get-SessionFromCookies -Cookies $cookies

    return $session
}