在Selenium项目实践中,为处理页面不同的link,button等页面元素,最好把这些页面元素和对应的Xpath写入配置文件,本文试图创建一个自定义的ConfigParser,处理配置文件的解析。
虽然是很小的一个类,但也从中学习到很多东东。
主要分三步:
1. 得到配置文件的路径
一般来说文件解析类会放在commonfunction目录下,而配置文件会放在同级的configuration目录下
在Python 中获得当前路径,使用os.getcwd()
或者os.path.abspath(os.curdir),print os.path.abspath('.')
要获得上级目录的路径使用os.path.abspath('..')。
这样我们在使用os.path.join方法就可以得到配置文件所在目录。
2. 使用get方法得到每个section的option,这里参考了limodou多年前的一篇文章。
3. 调用
在这里学会了如何导入上层目录中模块或其他目录(平级)下的模块,引用之前要先把上层目录加到sys.path中
import sys
sys.path.append("..")
完整代码如下,写的有点烂,请各位多指教。
代码
#!/usr/bin/env python
#coding=utf-8
import os
import sys
from ConfigParser import ConfigParser, NoOptionError, NoSectionError
class Parser(ConfigParser):
def __init__(self, inifile, encoding=None):
ConfigParser.__init__(self)
self.inifile=inifile
self.encoding = encoding
if inifile:
self.read(inifile)
def get(self, sec, option, default=None):
"""Get an option value for given section or return default"""
if self.has_option(sec, option):
return ConfigParser.get(self, sec, option, raw=0, vars=None)
else:
return default
def get_file_path(self, file):
path = os.path.join(os.path.abspath(".."), "configuration")
return os.path.join(path, file)
#coding=utf-8
import os
import sys
from ConfigParser import ConfigParser, NoOptionError, NoSectionError
class Parser(ConfigParser):
def __init__(self, inifile, encoding=None):
ConfigParser.__init__(self)
self.inifile=inifile
self.encoding = encoding
if inifile:
self.read(inifile)
def get(self, sec, option, default=None):
"""Get an option value for given section or return default"""
if self.has_option(sec, option):
return ConfigParser.get(self, sec, option, raw=0, vars=None)
else:
return default
def get_file_path(self, file):
path = os.path.join(os.path.abspath(".."), "configuration")
return os.path.join(path, file)