I finally figured out a solution to my issue with timing actions in Power BI Desktop where it is rendering charts etc on the screen. I used PixelChecksum in a while loop to see when the screen is done rendering. If it hasn't changed in 3 seconds (plus the time it takes to run the code) then we assume the rendering is done and calc the time it took.
Local $hTimer = TimerInit()
GetTime()
$T1[$TR][4] = $GTime
; end time for open online Report
Local $ic = "0", $ict = "0"
While $ic < 30
Local $iCheckSum = PixelChecksum(0, 0, $aClientSize[0], $aClientSize[1])
Sleep("100")
If $iCheckSum = PixelChecksum(0, 0, $aClientSize[0], $aClientSize[1]) Then
If $ic = 0 then
Local $hTimerC = TimerInit()
GetTime()
EndIf
$ic += 1
$ict += 1
Else
$ic = 0
$hTimerC = ""
EndIf
Global $iTimeC = Round(TimerDiff($hTimerC)/10,0)
WEnd
Global $iTime = Round(TimerDiff($hTimer)/10,0)
$iTimeT = $iTime - $iTimeC