解决UI自动化开多浏览器的痛点--单例模式
为什么会使用单例模式:
问题:有几个页面就有几个浏览器对象driver,会打开多个浏览器。ui自动化过程中,只需要打开一个浏览器
解决: python本身就是有单例模式,同样的对象保证只有一个对象
#设置单例模式 """ 类创建实例: 1- 先调用__new__() 创建方法----一般类里面省略不写,自动调用 2- 再调用初始化方法 __init__() 设置单例模式作用:判断一个类,如果有实例,他就不会再重新创建新的实例 """ class Single(object): #new方法创建对象 def __new__(cls, *args, **kwargs):#方法重写 #判断当前类是否有已经实例 if not hasattr(cls,'_instance'):#没有实例 cls._instance = super().__new__(cls)#使用父类的__new__方法 return cls._instance #哪一个类的实例需要使用单例模式,就直接继承Single类 #哪一个类的实例需要使用单例模式,就直接继承Single类 class Driver(Single): #一个下划线在类里面没有意义,自己约定的 _driver = None#初始值 def get_driver(self,browser_name='chrome'): if self._driver is None:# 判断有没有浏览器对象 if browser_name=='chrome': self._driver = webdriver.Chrome() elif browser_name=='firefox': self._driver = webdriver.Firefox() else: raise (f'没有这个--{browser_name}--浏览器!') #1- 设置隐式时间---设置全局变量 self._driver.implicitly_wait(implicitly_wait_time) #2- 浏览器最大化 self._driver.maximize_window() return self._driver#返回浏览器对象 if __name__ == '__main__': Driver().get_driver()#创建Driver实例对象,调用对应的get_driver
“学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来。”