Mar 12
Les sites Web s’appuient souvent sur des tableaux pour effectuer des mises en page complexes, cela entraine parfois des difficultés d’accès aux données pendant la phase d’automatisation. Ci-dessous un exemple concret portant sur certains cas que vous pourrez rencontrer.
Considérons la page web avec le code source suivant (vous pouvez l’enregistrer sur votre poste pour rejouer le test)
<table class="id_unique_du_tableau" border="1"> <thead class="id_unique_entete_du_tableau"> <tr> <td id="id_unique_entete_1_du_tableau">Entete 1</td> <td id="id_unique_entete_2_du_tableau">Entete 2</td> <td id="id_unique_entete_3_du_tableau">Entete 3</td> <td id="id_unique_entete_4_du_tableau">Entete 4</td> <td id="id_unique_entete_5_du_tableau">Entete 5</td> <td id="id_unique_entete_6_du_tableau">Entete 6</td> <td id="id_unique_entete_7_du_tableau">Entete 7</td> <td id="id_unique_entete_8_du_tableau">Entete 8</td> </tr> </thead> <tbody class="id_unique_corp_du_tableau"> <tr id="L1"> <td id="L1_C1">L1 C1</td> <td id="L1_C2" bgcolor="#ffa500">L1 C2</td> <td id="L1_C3" bgcolor="#00e000">L1 C3</td> <td id="L1_C4" bgcolor="#008000"><input style="width: 60px; font-size: 9px; font-weight: bold;" name="input_L1-C4" type="text" value="L1 C4" /></td> <td id="L1_C5" bgcolor="#0000ff"><input style="width: 60px; font-size: 9px; font-weight: bold;" name="input_L1-C5" type="text" value="L1 C5" /></td> <td id="L1_C6" bgcolor="#ffa500">L1 C6</td> <td id="L1_C7" bgcolor="#ff0000">L1 C7</td> <td id="L1_C8" bgcolor="#ffa500">L1 C8</td> </tr> <tr id="L2"> <td id="L2_C1" bgcolor="#008000">L2 C1</td> <td id="L2_C2" bgcolor="#ffff00">L2 C2</td> <td id="L2_C3" bgcolor="#00be00">L2 C3</td> <td id="L2_C4" bgcolor="#ff0000"><input style="width: 60px; font-size: 9px; font-weight: bold;" name="input_L2-C4" type="text" value="L2 C4" /></td> <td id="L2_C5" bgcolor="#ffa500"><input style="width: 60px; font-size: 9px; font-weight: bold;" name="input_L2-C5" type="text" value="L2 C5" /></td> <td id="L2_C6" bgcolor="#008000">L2 C6</td> <td id="L2_C7" bgcolor="#0000ff">L2 C7</td> <td id="L2_C8" bgcolor="#0eb0e0">L2 C8</td> </tr> </tbody> </table> |
Voici un script pour QTP (qui s’explique par lui même) qui accède aux différentes informations contnus dans un tableau via des solutions de contournement. (ce scripts est entièrement en descriptive programming donc un copié/collé suffit pour permettre un rejeu sur un autre environnement)
'----------------------------- 'Test Tableau QTP '----------------------------- Set Navigateur=Browser("name:=Page de test QTP") 'Navigateur.Highlight Set Page_Test=Navigateur.Page("title:=Page de test QTP") 'Page_Test.Highlight '---------------------------------------------------------------------------------------------------- ' Manipulation avec les ID '---------------------------------------------------------------------------------------------------- Set Tableau_Test=Page_Test.WebTable("class:=id_unique_du_tableau") 'Mettre en évidence le tableau pour prouver qu'on est bien sur le bon Tableau_Test.Highlight 'Mettre en évident l'entete set Entete=Tableau_Test.WebElement("class:=id_unique_entete_du_tableau") Entete.Highlight 'Mettre en évidence le corp du tableau set Corp=Tableau_Test.WebElement("class:=id_unique_corp_du_tableau") Corp.Highlight '---------------------------------------------- 'Accès au contenu des cellules '---------------------------------------------- 'Cellule L1 C1 Valeur_Contenu_Dans_La_Cellule_L1_C1=Tableau_Test.GetCellData(2,1) print Valeur_Contenu_Dans_La_Cellule_L1_C1 'Cellule L1 C2 Valeur_Contenu_Dans_La_Cellule_L1_C2=Tableau_Test.GetCellData(2,2) print Valeur_Contenu_Dans_La_Cellule_L1_C2 'Cellule L1 C3 Valeur_Contenu_Dans_La_Cellule_L1_C3=Tableau_Test.GetCellData(2,3) print Valeur_Contenu_Dans_La_Cellule_L1_C3 'Cellule L1 C4 - Cas particulier d'un INPUT dans la cellulle Valeur_Contenu_Dans_La_Cellule_L1_C4=Tableau_Test.ChildItem(2,4,"WebEdit",0).GetRoProperty("Value") print Valeur_Contenu_Dans_La_Cellule_L1_C4 'Cellule L1 C5 Valeur_Contenu_Dans_La_Cellule_L1_C5=Tableau_Test.ChildItem(2,5,"WebEdit",0).GetRoProperty("Value") print Valeur_Contenu_Dans_La_Cellule_L1_C5 'Cellule L1 C6 Valeur_Contenu_Dans_La_Cellule_L1_C6=Tableau_Test.GetCellData(2,6) print Valeur_Contenu_Dans_La_Cellule_L1_C6 'Cellule L1 C7 Valeur_Contenu_Dans_La_Cellule_L1_C7=Tableau_Test.GetCellData(2,7) print Valeur_Contenu_Dans_La_Cellule_L1_C7 'Cellule L1 C8 Valeur_Contenu_Dans_La_Cellule_L1_C8=Tableau_Test.GetCellData(2,8) print Valeur_Contenu_Dans_La_Cellule_L1_C8 'Cellule L2 C1 Valeur_Contenu_Dans_La_Cellule_L2_C1=Tableau_Test.GetCellData(3,1) print Valeur_Contenu_Dans_La_Cellule_L2_C1 'Cellule L2 C2 Valeur_Contenu_Dans_La_Cellule_L2_C2=Tableau_Test.GetCellData(3,2) print Valeur_Contenu_Dans_La_Cellule_L2_C2 'Cellule L2 C3 Valeur_Contenu_Dans_La_Cellule_L2_C3=Tableau_Test.GetCellData(3,3) print Valeur_Contenu_Dans_La_Cellule_L2_C3 'Cellule L2 C4 Valeur_Contenu_Dans_La_Cellule_L2_C4=Tableau_Test.ChildItem(3,4,"WebEdit",0).GetRoProperty("Value") print Valeur_Contenu_Dans_La_Cellule_L2_C4 'Cellule L2 C5 Valeur_Contenu_Dans_La_Cellule_L2_C5=Tableau_Test.ChildItem(3,5,"WebEdit",0).GetRoProperty("Value") print Valeur_Contenu_Dans_La_Cellule_L2_C5 'Cellule L2 C6 Valeur_Contenu_Dans_La_Cellule_L2_C6=Tableau_Test.GetCellData(3,6) print Valeur_Contenu_Dans_La_Cellule_L2_C6 'Cellule L2 C7 Valeur_Contenu_Dans_La_Cellule_L2_C7=Tableau_Test.GetCellData(3,7) print Valeur_Contenu_Dans_La_Cellule_L2_C7 'Cellule L2 C8 Valeur_Contenu_Dans_La_Cellule_L2_C8=Tableau_Test.GetCellData(3,8) print Valeur_Contenu_Dans_La_Cellule_L2_C8 '------------------------------------------------------------- 'Accès aux couleurs de fond des cellules '------------------------------------------------------------- set Ligne_De_La_Table=Tableau_Test.Object.all.tags("tr") set Cellule_De_La_Ligne_1=Ligne_De_La_Table(1).all.tags("td") 'Cellule L1 C1 Couleur_L1_C1=Cellule_De_La_Ligne_1(0).bgColor print Couleur_L1_C1 'Cellule L1 C2 Couleur_L1_C2=Cellule_De_La_Ligne_1(1).bgColor print Couleur_L1_C2 set Cellule_De_La_Ligne_2=Ligne_De_La_Table(2).all.tags("td") 'Cellule L2 C1 Couleur_L2_C1=Cellule_De_La_Ligne_2(0).bgColor print Couleur_L2_C1 'Cellule L2 C2 Couleur_L2_C2=Cellule_De_La_Ligne_2(1).bgColor print Couleur_L2_C2 |