Tenho este fragmento como modelo;
'verificar por
Do While Not session.findById("wnd[1]", False) Is Nothing
If Not session.findById("wnd[1]/usr/btnBUTTON_2", False) Is Nothing Then
session.findById("wnd[1]/usr/btnBUTTON_2").press
End If
If Not session.findById("wnd[1]/usr/btnSPOP-OPTION2", False) Is Nothing Then
session.findById("wnd[1]/usr/btnSPOP-OPTION2").press
End If
Loop
A variável interessante que precisará adaptar é esta seção.
If Not session.findById("wnd[1]/usr/btnBUTTON_2", False) Is Nothing
substitua "session.findById("wnd[1]/usr/btnBUTTON_2"" por qualquer ponto de dados que precise verificar a existência.
Poderia ser uma técnica útil em sua situação, elimine todas as declarações de goto, exceto talvez um manipulador de erros real no final, já que 'deveria' estar abordando todas as opções de interface com as quais poderia se deparar.
um exemplo mais envolvido:
Dim pop As SAPFEWSELib.GuiModalWindow
'verificar popups, tabela IE é cross Client, bloqueado, etc
If Not session.FindById("wnd[1]", False) Is Nothing Then
Set pop = session.FindById("wnd[1]")
If InStr(pop.text,
'Tabela bloqueada
Call SetScriptStatus(pop.text)
session.FindById("wnd[1]/usr/btnBUTTON_2").press
session.FindById("wnd[0]/tbar[0]/btn[15]").press