python单例模式之selenium driver实现单例
来源:脚本之家    时间:2022-03-02 13:36:21
目录
一、使用装饰器实现单例二、web自动化driver实现单例模式2.1编写单例模式的装饰器2.2driver使用装饰器,实现单例模式2.3获取driver的实例,就是单例了三、在自动化项目中具体的应用3.1项目结构四、工具层Utils4.1singleton.py是单例装饰器4.2GetSeleniumDriver.pydriver实现单例五、页面元素层TsetSharelab六、流程层七、case层,把业务逻辑组成一条条用例

一、使用装饰器实现单例

def Singleton(cls):
    _instance = {}
 
    def _singleton(*args, **kargs):
        if cls not in _instance:
            _instance[cls] = cls(*args, **kargs)
        return _instance[cls]
 
    return _singleton
 
 
@Singleton
class A(object):
    a = 1
 
    def __init__(self, x=0):
        self.x = x
 
 
a1 = A(2)
a2 = A(3)

二、web自动化driver实现单例模式

2.1 编写单例模式的装饰器

singleton.py

#coding:utf-8
#单例模式函数,用来修饰类
def singleton(cls,*args,**kw):
    instances = {}
    def _singleton():
        if cls not in instances:
            instances[cls] = cls(*args,**kw)
        return instances[cls]
    return _singleton

2.2 driver 使用装饰器,实现单例模式

GetSeleniumDriver.py
# -*- coding:utf-8 -*-
from selenium import webdriver
from singleton import singleton
@singleton
class GetSeleniumDriver(object):
    def __init__(self):
        self.driver = webdriver.Chrome()

2.3 获取driver的实例,就是单例了

class My_task(RES):
    def __init__(self):
        self.driver=GetSeleniumDriver().driver
 
    def Making_task_Button(self):
        Making_task_Button=self.driver.find_element_by_xpath(RES.Making_task_Button_xpth)
        return Making_task_Button
 
    def Audit_task_Button(self):
        Audit_task_Button=self.driver.find_element_by_xpath(RES.Audit_task_Button_xpth)
        return Audit_task_Button

三、在自动化项目中具体的应用

3.1项目结构

四、工具层 Utils

4.1singleton.py 是单例装饰器

#coding:utf-8
#单例模式函数,用来修饰类
def singleton(cls,*args,**kw):
    instances = {}
    def _singleton():
        if cls not in instances:
            instances[cls] = cls(*args,**kw)
        return instances[cls]
    return _singleton

4.2 GetSeleniumDriver.py driver实现单例

# -*- coding:utf-8 -*-
from selenium import webdriver
from Utils.singleton import singleton
@singleton
class GetSeleniumDriver(object):
    def __init__(self):
        self.driver = webdriver.Chrome()

五、页面元素层 TsetSharelab

My_task.py

# -*- coding:utf-8 -*-
 
from Utils.GetSeleniumDriver import GetSeleniumDriver
 
 
class My_task():
    def __init__(self):
        self.driver=GetSeleniumDriver().driver
 
    def Making_task_Button(self):
        Making_task_Button=self.driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/a[1]")
        return Making_task_Button
 
    def Audit_task_Button(self):
        Audit_task_Button=self.driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/a[1]")
        return Audit_task_Button

六、流程层

把一步一步的动作,封装成一个业务流程

BookCity_page_process.py

# -*- coding:utf-8 -*-
from Utils.GetSeleniumDriver import GetSeleniumDriver
 
import time
 
class BookCity_page_process(object):
    def __init__(self):
        self.driver=GetSeleniumDriver().driver
 
    def WeiBo_Loain_To_Share(self):  
        time.sleep(3)
        self.driver.find_elements_by_class_name("W_input").pop(0).send_keys(123)
        time.sleep(1)
        self.driver.find_elements_by_class_name("W_input").pop(1).send_keys(456)

七、case层 ,把业务逻辑组成一条条用例

test_case.py

#coding:utf-8
from time import sleep
from Utils.GetSeleniumDriver import GetSeleniumDriver
 
class CreativeBooks(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.driver = GetSeleniumDriver().driver
        sleep(2)
    @classmethod
    def tearDownClass(self):
        pass
 
    def setUp(self):
        self.driver = GetSeleniumDriver().driver

到此这篇关于python单例模式之selenium driver实现单例的文章就介绍到这了,更多相关python selenium driver实现单例内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

关键词: 单例模式 希望大家 一步一步 相关文章

X 关闭

X 关闭