Cet exemple vous montre comment adapter l'API find() dynamique et utiliser la méthode Html.HtmlBrowser pour vérifier l'état d'un navigateur lors de l'enregistrement ou de la lecture.
public void testMain (Object[] args)
{
// Cet exemple vérifie si le navigateur est ou non dans un état prêt.
// Pour exécuter ce script, démarrez une seule instance du navigateur, Internet Explorer ou Mozilla Firefox.
startBrowser("http://www.google.com");
sleep(5);
// Vérification de la classe du navigateur et, si elle est trouvée, retour à l'objet de test
TestObject[] to = find(atChild(".class", "Html.HtmlBrowser"));
// Un ou plusieurs objets de test trouvés
if(to.length > 0)
{
// Transtypage dans BrowserTestObject
BrowserTestObject bto = (BrowserTestObject)to[0];
// Attendre que le navigateur soit prêt
// paramètres : objet de test du navigateur, état du navigateur, délai d'attente & délai en secondes
boolean isBrowserReady = waitForBrowserTobeReady(bto, 4, 240, 10);
if(isBrowserReady)
{
// Réalisation d'une opération de recherche et sauvegarde de l'objet retourné dans le tableau 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;
}
// Clic sur le premier objet de test s'il est trouvé.
((GuiTestObject)googleButton[0]).click();
}
else
{
System.out.println("Le navigateur n'est pas passé à l'état Prêt");
}
unregisterAll();
}
else
{
System.out.println("Pas d'instance du navigateur trouvée");
}
}
/*
*
* waitForBrowserTobeReady
* paramètres :
* Cette méthode attend que le navigateur passe à l'état Prêt (readyState) dans une période de temps spécifiée
* BrowserTestObject = bto
* readyState (état Prêt) = 4
* timeout (délai d'attente) = 120 secondes
* delay (retard) = 10 secondes
*/
static boolean waitForBrowserTobeReady(BrowserTestObject bto, int readyState, int timeout, int delay)
{
// Vérifier si le navigateur est prêt
boolean isBrowserReady = false;
// Nombre d'essais avec un délai
int noOfTries = timeout/delay;
for(int i=0; i < noOfTries; i++)
{
try
{
// Valeurs possibles de la propriété .readyState pour le navigateur
// 0 - Non initialisé
//1,2 - EN_CHARGEMENT
//3 - CHARGE
//4 - ACTIVE/VISIBLE/PRET
int browserState = ((Integer)(bto.getProperty(".readyState"))).intValue();
if(browserState >= readyState)
{
isBrowserReady = true;
break;
}
}
// Interception des exceptions
catch (Exception e)
{
break;
}
sleep(delay);
}
// Retour réussi. Le navigateur est dans un état Prêt.
return isBrowserReady;
}
}