1 # coding:utf-8 2 """ 3 页面 table处理 4 """ 5 6 from selenium import webdriver 7 from selenium.webdriver.common.by import By 8 from selenium.common.exceptions import NoSuchElementException 9 10 class WebTable(object): 11 12 def __init__(self, webElement): 13 self.webTable = webElement 14 15 #得到表格中的行数 16 def getRowCount(self): 17 rowConunts = self.webTable.find_elements(By.TAG_NAME, 'tr') 18 return len(rowConunts) 19 20 #得到指定行的列数 21 def getColCount(self, rowIdx): 22 try: 23 rowCounts = self.webTable.find_elements(By.TAG_NAME, 'tr') 24 25 if len(rowCounts) < rowIdx: 26 raise "当前行数大于表格行数" 27 28 #取得当前的 tr 29 rowNum = rowCounts[rowIdx] 30 31 #计算当前行的 td 数 32 colCounts = rowNum.find_elements(By.TAG_NAME, 'td') 33 return len(colCounts) 34 except NoSuchElementException as e: 35 raise NoSuchElementException("Failed to get the cell") 36 37 38 #得到指定单元格内容, 传入指定的行数、列数作为参数 39 def getCellText(self, rowIdx, colIdx): 40 try: 41 rowCounts = self.webTable.find_elements(By.TAG_NAME, 'tr') 42 43 if len(rowCounts) < rowIdx: 44 raise "当前行数大于表格行数" 45 46 #得到对应的行数 47 currentRow = rowCounts[rowIdx] 48 #获取行中所有的td 49 td = currentRow.find_elements(By.TAG_NAME, 'td') 50 51 if len(td) < colIdx: 52 raise "当前列数大于表格列数" 53 54 #取得对应的单元格 55 cell = td[colIdx] 56 return cell.text 57 except NoSuchElementException as e: 58 raise NoSuchElementException("Failed to get the cell") 59 60 if __name__ == '__main__': 61 driver = webdriver.Firefox() 62 driver.get('http://www.w3school.com.cn/tags/tag_table.asp') 63 temp_webTable = WebTable(driver.find_element(By.TAG_NAME, 'table')) 64 print temp_webTable.getRowCount() 65 print temp_webTable.getColCount(3) 66 print temp_webTable.getCellText(3, 2) #行和列的索引从0开始