Anzahl der Zeilen in einer Tabelle mit Selenium C#
-
25-10-2019 - |
Frage
Ich bin neu in Selen. Ich arbeite mit C#. Es gibt einen solchen Tisch. Ich habe es mit Firebug gesehen.
<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>
Und das Problem hier ist, dass ich nicht weiß, wie man die Anzahl der Zeilen in einer Tabelle bekommt, die sich dynamisch ändert. Gibt es irgendeinen Weg??
Versuchte xPathcount, bekam aber einige Ausnahmeprobleme.
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");
Ich habe auch XPathcount so ausprobiert
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");
Aber beide erhobenen Ausnahmen. Kann mir jemand in dieser Hinsicht helfen?
Danke
Lösung
Wenn es die einzige Tabelle mit Zeilen ist, die mit diesen Klassennamen gekennzeichnet sind, können Sie nur verwenden:
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
Wenn nicht, müssen Sie einen besseren Weg finden, um das zu lokalisieren table
. Mit Ihrem (sehr langen) XPath -Selektor stimmt etwas nicht ganz richtig, der ganz oben im Dokument beginnt. Daran ist nichts falsch, aber mit einer dynamischen Webseite ist es sehr schwierig, richtig zu werden.
Stattdessen müssen Sie ein Element näher an Ihrem finden table
und dann drin filtern. Wenn zum Beispiel einer von Ihnen div
s hat a name
Attribut könnten Sie verwenden //div[@name='someName']//tr
. Weitere Informationen zur Verwendung von XPath -Selektoren finden Sie unter hier.
Andere Tipps
Versuchen Sie dies, um die Anzahl der Zeilen in einer Tabelle zu erhalten
int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;