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

Leave a Reply

You must be logged in to post a comment.

preload preload preload