zoukankan      html  css  js  c++  java
  • 解决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
    “学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来。”
  • 相关阅读:
    python安装pip
    MySQL免安装版
    git仓库删除所有提交历史记录,成为一个干净的新仓库
    git地址带上密码,不用每次提交都输入密码
    virtualenv
    mac卸载python
    换源
    屏幕旋转,ViewController触发事件
    ViewController启动加载过程
    使用 symbolicatecrash转化crash日志
  • 原文地址:https://www.cnblogs.com/Lara1798/p/15190070.html
Copyright © 2011-2022 走看看