WebTable 扩展

 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开始

 

posted @ 2013-07-27 15:52  Roger|  阅读(1178)  评论(0编辑  收藏  举报