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()

 

posted @ 2019-04-28 18:40  测试小子  阅读(177)  评论(0编辑  收藏  举报