Pregunta

Soy nuevo en Selenium. Estoy trabajando con C#. Hay una mesa como esta. Lo vi usando Firebug.

<table>
  <tbody>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
  </tbody>
</table>

Y el problema aquí es que no sé cómo obtener el número de filas en una tabla que cambia dinámicamente. ¿¿Hay alguna manera??

Probé xpathCount pero obtuve algunos problemas de excepción.

decimal numOfRows = selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody/tr");

También probé xpathcount como este

selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody");

Pero ambos plantearon excepciones. ¿Alguien puede ayudarme a este respecto?

Gracias

¿Fue útil?

Solución

Si es la única tabla con filas marcadas con esos nombres de clases, podría usar:

decimal numOfOddRows = selenium.GetXpathCount("//tr[@class='v-table-row-odd']"); // 3
decimal numOfEvenRows = selenium.GetXpathCount("//tr[@class='v-table-row']");    // 3
decimal numOfRows = numOfOddRows + numOfEvenRows;                        // 3 + 3 = 6

Si no, entonces debe encontrar una mejor manera de localizar el table. Algo no está del todo bien con su selector XPath (muy largo) que comienza desde la parte superior del documento. No hay nada inherentemente incorrecto en esto, pero con una página web dinámica es muy difícil de hacer bien.

En su lugar, debe localizar un elemento más cercano a su table y luego filtre dentro de eso. Si, por ejemplo, si uno de su divS tiene un name atributo, podrías usar //div[@name='someName']//tr. Para obtener más información sobre el uso de los selectores XPath, consulte aquí.

Otros consejos

Prueba esto para obtener el número de filas en una tabla

int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top