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