Esse exemplo mostra como adaptar a API dinâmica find() e usar o método Html.HtmlBrowser para verificar o estado do navegador durante a gravação ou a reproduçao.
public void testMain(Object[] args)
{
//Essa amostra verifica se o Navegador está em estado pronto ou não.
// para executar esse script, inicie uma instância única do navegador Internet Explorer ou Mozilla Firefox.
startBrowser("http://www.google.com");
sleep(5);
// Verificando a classe do Navegador e quando ela for encontrada, retorna para o Test Object
TestObject[] to = find(atChild(".class", "Html.HtmlBrowser"));
// Localizando um ou mais Objetos de Teste
if(to.length > 0)
{
// Executando o cast no BrowserTestObject
BrowserTestObject bto = (BrowserTestObject)to[0];
//Esperando o navegador ficar pronto
// parâmetro, objeto de teste do navegador, estado do navegador, tempo limite& atraso em segundos
boolean isBrowserReady = waitForBrowserTobeReady(bto, 4, 240, 10);
if(isBrowserReady)
{
// Executando uma operação de salvamento and e salvando o objeto retornado na matriz in the TestObject.
TestObject[] googleButton = bto.find(atDescendant(".class" ,"Html.INPUT.submit",".value","I'm Feeling Lucky"));
if(googleButton.length ==0 )
{
System.out.println("None found");
return;
}
//Clique no primeiro objeto de teste achado.
((GuiTestObject)googleButton[0]).click();
}
else
{
System.out.println("Browser didn't come to ready State");
}
unregisterAll();
}
else
{
System.out.println("No browser instance found");
}
}
/*
*
* waitForBrowserTobeReady
* param :
* Esse método espera o navegador chegar no estado readyState dentro de um período de tempo específico
* BrowserTestObject as bto
* readyState as 4
* timeout as 120 seconds
* delay as 10 seconds
*/
static boolean waitForBrowserTobeReady(BrowserTestObject bto, int readyState, int timeout, int delay)
{
//Verifica se o navegador está pronto
boolean isBrowserReady = false;
// Número de tentativas com um atraso
int noOfTries = timeout/delay;
for(int i=0; i < noOfTries; i++)
{
try
{
//Possível .readyState valores de propriedades para o navegador
// 0 - Não inicializado
//1,2 - CARREGANDO
//3 - CARREGADO
//4 - HABILITAR/VISÍVEL/PRONTO
int browserState = ((Integer)(bto.getProperty(".readyState"))).intValue();
if(browserState >= readyState)
{
isBrowserReady = true;
break;
}
}
//Captura a exceçao, se houver
catch (Exception e)
{
break;
}
sleep(delay);
}
//Retorna bem sucedido se o estado da propriedade navegador pronto for true
return isBrowserReady;
}
}