Número de filas en una tabla usando Selenium C#
-
25-10-2019 - |
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
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 div
S 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;