zoukankan      html  css  js  c++  java
  • 封装操作表格的公用类

    <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()
  • 相关阅读:
    c++ 存储连续性,作用域和链接性注意点
    函数模板的知识点总结
    c++ 左值引用的注意点
    VS2015如何在同一个解决方案下建立多个项目及多个项目之间的引用
    编译opencv4.1.0+tesseract5.0 的Realease x64版本遇见的问题解决
    逻辑化简-卡诺图
    从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 (转载)
    matlab绘图
    多个EXCEL文件合并成一个
    数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
  • 原文地址:https://www.cnblogs.com/sleeping-cat/p/8278599.html
Copyright © 2011-2022 走看看