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 = webElement14 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 #取得当前的 tr29 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 #获取行中所有的td49 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.text57 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开始