Как получить количество элементов в таблице с двумя именами классов? - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно получить длину таблицы tds и trs из таблицы, я использую xpath, но всякий раз, когда я запускаю код, я получаю значения, полностью отличающиеся от правильных;

Таблица следует этой схеме:

<table class="kktable stats">
<tbody>
<tr>
<td></td>
...
</tr>

Моя текущая попытка:

tr_ = driver.find_elements_by_xpath('//table/tbody/tr')
tds_ = driver.find_elements_by_xpath('//table//tbody//tr[1]//td')

print(len(tr_), len(tds_))

¡Это должно вывести 34, 13, но выдает 43, 35, и мне нужно что-то не абсолютное, потому что страница меняется ежедневно!

класс таблицы kktable stats

В настоящее время я использую этот метод ниже /

table = '/html/body/div[4]/div[2]/div[6]/div[3]/div/div/div/div[3]/div/table/tbody'
trs = driver.find_elements_by_xpath(table+"/tr")
tds = driver.find_elements_by_xpath(table+"/tr[1]/td")

Это выводит правильно => 34, 13

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

tds_ = driver.find_elements_by_xpath('//table[@class="kktable.stats"]//tbody//tr[1]//td')

Но, к сожалению, он вернул 0

1 Ответ

0 голосов
/ 07 февраля 2019

Чтобы получить счет <tr> с, вы можете использовать:

  • CssSelector :

    trs = driver.find_elements_by_css_selector("table.kktable.stats > tbody tr")
    print(len(trs))
    
  • XPath :

    trs = driver.find_elements_by_xpath("//table[@class='kktable stats']/tbody//tr")
    print(len(trs))
    

Чтобы получить счет <td> с от первого <tr>, вы можете использовать:

  • CssSelector :

    trs = driver.find_elements_by_css_selector("table.kktable.stats > tbody > tr td")
    print(len(tds))
    
  • XPath :

    tds = driver.find_elements_by_xpath("//table[@class='kktable stats']/tbody/tr//td")
    print(len(tds))
    
...