Как подсчитать строки в таблице из веб-приложения, используя веб-драйвер selenium python. Здесь мы можем получить все данные в таблице из веб-приложения, но не могли подсчитывать строки и столбцы, пожалуйста, дайте мне представление о том, как это сделать.
Как подсчитать количество строк в таблице из веб-приложения, используя selenium python webdriver
Ответ 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))