封装操作表格的公用类

<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()
posted @ 2018-01-13 11:06  sleeping_cat  阅读(259)  评论(0编辑  收藏  举报