3 votes

comment trouver des éléments dans un tableau Grille en utilisant WATIN

J'ai des problèmes pour trouver un élément dans une table - soit il est nul, soit j'obtiens une exception de tableau hors limites. Voici ce que j'essaie de faire.

Voici un exemple de code html que j'analyse à partir de la page....

<table id="ctl00__defaultCont__ctrlHeader__ctrlHeader_p_Providerd33">
<tr>
    <td class="w90 ta-right lbl">
                        <span>Provider ID</span>
                    </td>
    <td class="fieldWithNoBorderClass">
                        <div id="ob_iT_providerIDContainer" class="ob_iTCN" style="width:220px;"><div class="ob_iTL"></div><div class="ob_iTR"></div><div class="ob_iTC"><input name="ctl00$_defaultContent$_ctrlHeader$_ctrlHeader$_providerID" type="text" value="P13040620" id="ctl00__defaultContent__ctrlHeader__ctrlHeader__providerID" class="ob_iTIE" /></div><div class="ob_iCallbackScript" style="display:none;"></div></div>
                    </td>
</tr>

Voici ce que j'ai commencé à faire :

J'essaie essentiellement de trouver l'identifiant du fournisseur (PROVIDER ID). Par exemple...

Table table = browser.Table(Find.ById("ctl00__defaultContent__ctrlHeader__ctrlHeader_p_Provider3"));
                        TableRowCollection tableRows = table.TableRows;
                        TableRow row = tableRows[3];
                        ElementCollection rowData = row.Elements;

                        string name = rowData[0].OuterText;
                        string membername = rowData[1].OuterText;

2voto

jm. Points 7092

Je fais quelque chose comme ça, et ça marche sur l'un de mes projets. Cela vous donnera peut-être une idée.

REMARQUE : l'accès à la table Watin est TRÈS lent.

      Table table = browser.Table("ctl00_defaultContent_ctrlHeader__ctrlHeader_p_Provider3");
      if (table == null)
      {
         DebugLog("Could not find table");
         throw new Exception("Results table missing.");
      }
      TableRow tr = table.TableRows[3];
      while( tr != null)
      {
        string words = tr.TableCells[1].Text;
        tr = (TableRow)tr.NextSibling;
      }

0voto

alonp Points 712

Vous devez rechercher les éléments un par un :

Table table = browser.Table(Find.ById("ctl00_defaultContent_ctrlHeader__ctrlHeader_p_Provider3")); 
  for (int i = 0; i < table.TableBodies[bodyIndex].TableRows.Count; i++)
      {
           if (table.TableBodies[0].OwnTableRows[i].TableCells[headerNameColumn].Text ==             "Provider id...")
           {
              // do something
           }
      }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X