python单例模式之selenium driver实现单例

这篇文章主要介绍了python单例模式之selenium driver实现单例,使用装饰器实现单例,文章基于python的相关资料实现主题,具有一的的参考价值,需要的朋友可以参考一下

一、使用装饰器实现单例

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实现单例内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是python单例模式之selenium driver实现单例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python