请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

封装读取配置文件的问题

老师,关于封装读取配置文件的问题,我按照教程封装了读取ini文件配置ReadIni(),假如我有N个页面,我想把每个页面里的元素都用.ini文件保存,并根据不同的页面去读取。现在有个问题就是,我在不同的页面封装页面操作的基本方法的时候,需要先确保读取的是当前页面的ini文件,否则无法找到配置项。
我现在的做法是在每个页面类将get_ini()这个方法实例化,代码结构如下:
class BasePage():

def __init__(self,driver):
self.driver=driver

def get_ini(self,page_name)
#获取不同页面的ini文件
	global INI
	if page_name == "Page1"
		INI = ReadIni(filename="Page1.ini",node="Page1Element")
	if page_name == "Page2"
		INI = ReadIni(filename="Page2.ini",node="Page2Element")

def find_element(self,key):
#定位元素方法
	data = INI.get_value(key)
	by = data.split('>')[0]
	value = data.split('>')[1]
	...#后面省略了,跟教程差不多

class Page1(BasePage):

def __init__(self,driver):
	super().__init__(driver)
	self.driver = driver
	self.get_ini("Page1")

class Page2(BasePage):

def __init__(self,driver):
	super().__init__(driver)
	self.driver = driver
	self.get_ini("Page2")

但是这样有个问题,有时候不同页面直接会有共用同一个方法的情况;比如我在操作Page1的时候,调用了Page2里的某个方法,这样INI就会变成Page2的;再回头取Page1的INI就会报错。
请问这种情况有什么好的方法去避免呢?

P.S. 我之前是用的更粗暴的方法是每个页面类前面先调用一次ReadIni(),比如Page1_Ini=ReadIni(filename=“Page1.ini”,node=“Page1Element”)
然后将Page1_Ini.get_value(key)整个函数作为参数传到find_element()方法里,但是这样看起来太繁琐了,所以放弃了,想了现在的方法,但是依然有这种问题,希望老师能给出更好的解决方法,谢谢!

正在回答 回答被采纳积分+3

1回答

Mushishi 2019-05-16 22:09:14

我不明白你为什么page1调用page2的,如果有共有放basepage就行啊,分层的思想就是完全分离,你这个咋还不分呢,有一样的共用

0 回复 有任何疑惑可以回复我~
  • 提问者 monster_2019 #1
    因为有的页面功能比较复杂,还会有多个不同的弹窗页面,我把弹窗页面单独区分开来了,这样弹窗页面就会用到主页面的某些方法;但是这些方法是属于这个页面的,会用到find_element(),不属于basepage,放在basepage里也怪怪的
    回复 有任何疑惑可以回复我~ 2019-05-17 09:47:34
  • Mushishi 回复 提问者 monster_2019 #2
    你这个又想多了,你把所有弹窗都放入base就行了。其他的别去变更。
    回复 有任何疑惑可以回复我~ 2019-05-18 09:15:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信