• WebDriver高阶API(7)



    ################################################
    ###########propagate 是否继承父类的log信息,0:否
    [loggers]
    keys=root,example01,example02
    [logger_root]
    level=DEBUG
    handlers=hand01,hand02
    [logger_example01]
    handlers=hand01,hand02
    qualname=example01
    propagate=0
    [logger_example02]
    handlers=hand01,hand03
    qualname=example02
    propagate=0
    ###############################################
    [handlers]
    keys=hand01,hand02,hand03
    [handler_hand01]
    class=StreamHandler
    level=DEBUG
    formatter=form01
    args=(sys.stderr,)
    [handler_hand02]
    class=FileHandler
    level=DEBUG
    formatter=form01
    args=('D:\AutoTestLog.log', 'a')
    [handler_hand03]
    class=handlers.RotatingFileHandler
    level=INFO
    formatter=form01
    args=('D:\AutoTestLog.log', 'a', 10*1024*1024, 5)
    ###############################################
    [formatters]
    keys=form01,form02
    [formatter_form01]
    format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
    datefmt=%Y-%m-%d %H:%M:%S
    [formatter_form02]
    format=%(name)-12s: %(levelname)-8s %(message)s
    datefmt=%Y-%m-%d %H:%M:%S

    Log.py

    #encoding=utf-8
    import logging.config
    
    logging.config.fileConfig("Logger.conf")
    logger = logging.getLogger("example01")
    
    def debug(message):
        #打印debug级别的日志方法
        logging.debug(message)
    
    def warning(message):
        #打印warning级别的日志方法
        logging.warning(message)
    
    def info(message):
        #打印info级别的日志方法
        logging.info(message)

    SoGou.py

    #encoding=utf-8
    from selenium import webdriver
    import unittest
    #从当前文件所在目录中导入Log.py文件中的所有内容
    from Log import *
    
    class TestSoGouSearch(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Ie(executable_path="D:\IEDriverServer")
    
        def test_SoGouSearch(self):
            info(u"======================搜索======================")
            url = "http://www.sogou.com"
            self.driver.get(url)
            info(u"访问搜狗首页")
            self.driver.find_element_by_id("query").send_keys("World of Warcraft")
            info(u"在搜索输入框中输入关键字串'World of Warcraft'")
            self.driver.find_element_by_id("stb").click()
            info(u"单击搜索按钮")
            info(u"==============测试用例执行结束===================")
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()

    16、封装操作表格的公用类
    公用类:Table.py

    #encoding=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,e:
                raise e
    
        def getWebElementInCell(self,rowNo,colNo,by,value):
            #获取表格中某行某列的单元格中某个页面元素对象,
            #by表示定位页面元素的方法,比如 id,
            #vlaue表示定位表达式,比如 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,e:
                raise e

    OperTable.py

    #encoding=utf-8
    import unittest
    import time
    from selenium import webdriver
    #从当前文件所在目录下导入Table.py文件中的Table类
    from Table import Table
    
    class TestDemo(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Ie(executable_path = "D:\IEDriverServer")
    
        def testTable(self):
            url = "http://127.0.0.1:8080/test_table.html"
            #访问自定义网页
            self.driver.get(url)
            #获取被测页面中的表格元素,并存储在webTable变量中
            webTable = self.driver.find_element_by_tag_name("table")
            #使用webTable变量对Table类进行实例化
            table = Table(webTable)
            #统计表格的行数
            print table.getRowCount()
            #统计表格的列数
            print table.getColumnCount()
            #获取表格中第二行第三列单元格对象
            cell = table.getCell(2,3)
            #断言获取的单元格文本内容是否是“第二知第三列”
            self.assertAlmostEqual(u"第二行第三列",cell.text)
            #获取表格中第三行第二列单元格中输入框对象
            cellInput = table.getWebElementInCell(3,2,"tag name","input")
            #在找到的输入框中输入“第三行的第二列表格被找到”关键字内容
            cellInput.send_keys(u"第三行的第二列表格被找到")
            #等待3秒,肉眼查看输入结果
            time.sleep(3)
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()
  • 相关阅读:
    Blazor server VS Blazor WebAssembly
    DataTable 差集Except、交集Intersect、并集Union
    Power BI Anomaly Detection
    Power BI智能叙述
    Configure the Secure Store Service in SharePoint Server
    小批量excel数据导入oracle
    python批量写入oracle
    centos7安装java,配置的环境变量不生效 -bash: java: command not found
    nebula docker三件套组件版本问题
    shell删除指定行
  • 原文地址:https://www.cnblogs.com/test-chen/p/10785748.html
Copyright © 2020-2023  润新知