Как подсчитать количество строк в таблице из веб-приложения, используя selenium python webdriver

Как подсчитать строки в таблице из веб-приложения, используя веб-драйвер selenium python. Здесь мы можем получить все данные в таблице из веб-приложения, но не могли подсчитывать строки и столбцы, пожалуйста, дайте мне представление о том, как это сделать.

Ответ 1

Попробуйте что-нибудь подобное

int rowCount=driver.findElements(By.xpath("//table[@id='DataTable']/tbody/tr")).size();

int columnCount=driver.findElements(By.xpath("//table[@id='DataTable']/tbody/tr/td")).size();

FYI: Это реализация в Java.

Ответ 2

Ответ Santoshsarma близок к правилу Java, но он будет подсчитывать количество ячеек, а не количество столбцов. Здесь версия Python, которая будет подсчитывать количество столбцов в первой строке:

row_count = len(driver.find_elements_by_xpath("//table[@id='DataTable']/tbody/tr"))
column_count = len(driver.find_elements_by_xpath("//table[@id='DataTable']/tbody/tr/td"))

Если в вашей таблице есть заголовок, вы можете вместо этого подсчитать столбцы.

Я не пробовал использовать storeXpathCount.

Ответ 3

Selenium имеет функцию для подсчета результата XPath, см. Http://release.seleniumhq.org/selenium-core/1.0/reference.html. В соответствии с этим вы можете использовать storeXpathCount.

Я использую класс DefaultSelenium из selenium-java-client-driver, где я могу использовать (также в java) следующее:

int rowCount = selenium.getXpathCount("//table[@id='Datatable']/tbody/tr").intValue()

Ответ 4

Вы можете сделать это, используя find_elements_by или execute_script.

Получение счета путем применения len по результату find_elements_by является правильным способом, однако в другом случае получение количества строк и столбцов с помощью execute_script выполняется быстрее, чем получение len из результата find_elements_by метода find_elements_by:

rows_count = driver.execute_script("return document.getElementsByTagName('tr').length")
columns_count = driver.execute_script("return document.getElementsByTagName('tr')[0].getElementsByTagName('th').length")

Ниже приведены показатели эффективности использования метода find_elements_by vs execute_script:

from timeit import timeit

# Time metrics of retrieving 111 table rows
timeit(lambda:driver.execute_script("return document.getElementsByTagName('tr').length"), number=1000)
# 5.525
timeit(lambda:len(driver.find_elements_by_tag_name("tr")), number=1000) 
# 9.799
timeit(lambda:len(driver.find_elements_by_xpath("//table/tbody/tr")), number=1000)
# 10.656

# Time metrics of retrieving 5 table headers
timeit(lambda:driver.execute_script("return document.getElementsByTagName('tr')[0].getElementsByTagName('th').length"), number=1000)
# 5.441
timeit(lambda:len(driver.find_elements_by_tag_name("th")), number=1000)
8.604
timeit(lambda:len(driver.find_elements_by_xpath("//table/tbody/th")), number=1000)
# 9.336

Ответ 5

Для пользователей python простой способ подсчета тега состоит в следующем.

!#use find_elements_by_xpath

test_elem = self.driver.find_elements_by_xpath("//div[@id='host-history']/table[1]/tbody[1]/tr")

!#then check the len of the returnes list

print (len(test_elem))