<html> <head> <title>设置文本框属性</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <table width="400" border="1" id="table"> <tr> <td align="left"> <p>第一行第一列</p> <input type="text"></input> </td> <td align="left"> <p>第一行第二列</p> <input type="text"></input> </td> <td align="left"> <p>第一行第三列</p> <input type="text"></input> </td> </tr> <tr> <td align="left"> <p>第二行第一列</p> <input type="text"></input> </td> <td align="left"> <p>第二行第二列</p> <input type="text"></input> </td> <td align="left"> <p>第二行第三列</p> <input type="text"></input> </td> </tr> <tr> <td align="left"> <p>第三行第一列</p> <input type="text"></input> </td> <td align="left"> <p>第三行第二列</p> <input type="text"></input> </td> <td align="left"> <p>第三行第三列</p> <input type="text"></input> </td> </tr> </table> </body> </html>
1.存放table对象
#!usr/bin/env python #-*- coding:utf-8 -*- class Table(object): #定义一个私有属性__table,用于存放table对象 __table = ‘‘ def __init__(self,table): #Table类的构造方法 self.setTable(table) def setTable(self,table): #对私有属性__table进行赋值操作 self.__table = table def getTable(self): #获取私有属性__table的值 return self.__table def getRowCount(self): #返回table对象中所有的行tr标签元素对象 return len(self.__table.find_elements_by_tag_name(‘tr‘)) def getColumnCount(self): #获取表格对象中的列数 return len (self.__table.find_elements_by_tag_name(‘tr‘)[0].find_elements_by_tag_name(‘td‘)) def getCell(self,rowNo,colNo): #获取表格中某行某列的单元格对象 try: #找到表格中的某一行,因为行号从0开始 #例如要找第三行,则需要进行3 - 1 = 2来获取第三行tr元素对象 currentRow = self.__table.find_elements_by_tag_name(‘tr‘)[rowNo - 1] #在找到的某行基础上,再找这行中的某一列,列号也从0开始 currentCol = currentRow.find_elements_by_tag_name(‘td‘)[colNo - 1] #返回找到的单元格对象 return currentCol except Exception as e: raise e def getWebElementInCell(self,rowNo,colNo,by,value): #获取表格中某行某列的单元格中某个页面元素对象, # by表示定位页面元素的方法,比如id, # value表示定位表达式,比如query try: currentRow = self.__table.find_elements_by_tag_name(‘tr‘)[rowNo - 1] currentCol = currentRow.find_elements_by_tag_name(‘td‘)[colNo - 1] element = currentCol.find_element(by = by,value =value) return element except Exception as e: raise e
2.
#!usr/bin/env python #-*- coding:utf-8 -*- #封装操作表格的公用类 from selenium import webdriver import unittest import time from Table import Table class TestTableOpertion(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def testTable(self): url = ‘e:\\html.html‘ self.driver.get(url) #获取被测试页面中的表格元素,并存储子啊webTable变量中 webTable = self.driver webTable.find_elements_by_tag_name(‘table‘) #使用webTable变量对table类进行实例化 table = Table(webTable) #统计表格的行数 print(table.getRowCount()) #统计表格的列数 print(table.getColumnCount()) #获取表格中第二行第三列单元格对象 cell = table.getCell(2,3) self.assertAlmostEqual(‘第二行第三列‘,cell.text) #获取表格中第三行第二列单元格中的输入对象 cellInput = table.getWebElementInCell(3,2,‘tag name‘,‘input‘) #在找到的输入框中输入“第三行的第二列表格被找到”关键字内容 cellInput.send_keys(‘第三行的第二列表格被找到‘) time.sleep(3) def tearDown(self): self.driver.quit() if __name__ == ‘__main__‘: unittest.main()