封装读取配置文件的问题

来源:2-20 重构封装读取配置文件方法

monster_2019

2019-05-16

老师,关于封装读取配置文件的问题,我按照教程封装了读取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()方法里,但是这样看起来太繁琐了,所以放弃了,想了现在的方法,但是依然有这种问题,希望老师能给出更好的解决方法,谢谢!

写回答

1回答

Mushishi

2019-05-16

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

0
2
Mushishi
回复
monster_2019
你这个又想多了,你把所有弹窗都放入base就行了。其他的别去变更。
2019-05-18
共2条回复

Selenium3与Python3实战Web自动化测试框架

打破无项目经验、无框架经验瓶颈,实战Web自动化测试框架!

1883 学习 · 1093 问题

查看课程