Количество строк в таблице с использованием Selenium C # - PullRequest
1 голос
/ 16 февраля 2012

Я новичок в Selenium. Я работаю с C #. Вот такой стол. Я видел это с помощью 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>

И проблема здесь в том, что я не знаю, как получить количество строк в таблице, которое изменяется динамически. Есть ли способ ??

Попробовал xpathCount, но возникли проблемы с исключением ...

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");

Я тоже попробовал xpathCount вот так

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");

Но оба выдвинули исключения. Может ли кто-нибудь помочь мне в этом отношении.

Спасибо

Ответы [ 2 ]

4 голосов
/ 27 июля 2015

Попробуйте, чтобы получить количество строк в таблице

int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;
3 голосов
/ 16 февраля 2012

Если это единственная таблица со строками, помеченными этими именами классов, вы можете просто использовать:

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

Если нет, то вам нужно найти лучший способ определения местоположения table.Что-то не так с вашим (очень длинным) селектором XPath, который начинается с самого верха документа.В этом нет ничего плохого по своей сути, но с динамической веб-страницей это очень трудно сделать правильно.

Вместо этого вам нужно найти элемент ближе к вашему table и затем отфильтровать его.Например, если один из ваших div s имеет атрибут name, вы можете использовать //div[@name='someName']//tr.Для получения дополнительной информации об использовании селекторов XPath см. здесь .

...