python单例模式之selenium driver实现单例
作者:傲娇的喵酱 发布时间:2021-09-30 14:31:03
标签:python,selenium,driver,单例
一、使用装饰器实现单例
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
来源:https://blog.csdn.net/qq_39208536/article/details/123214101
0
投稿
猜你喜欢
- 具体代码如下所示:<?php//在子类或类内部用“::”调用本类或父类时,不是静态调用方法,而是范围解析操作符。class Paren
- 本篇文章给大家带来的内容是关于Python如何筛选序列中的元素 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、需求序列
- 一、什么是集合二、集合的创建方式集合中的元素不能重复#地点:湖北武汉#姓名:学工科的皮皮志#开发时间:2022/2/27 19:
- 一、构建示例数据import pandas as pdimport numpy as npdata = {"ID":[2
- Numpy是什么很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。
- 在以前的日志中讲了怎么制作验证码,这篇就讲讲怎么给验证码加上起干扰效果的杂点。 其实很简单,首先做一个
- 日期和时间类型MySQL有多个表示各种日期和时间值的数据类型, 比如YEAR和DATE. MySQL存储时间的最精确粒度是秒。 然而, 能做
- 1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PH
- 前言大家好,我是小张~记得小时候,家里只有一个钟表用来看时间(含有时针、分针、秒针的那种),挂在墙上哒哒哒响个不停,现在生活条件好了、基本人
- 下半年毕业季,各种毕业设计纷涌而至,虽然学校教了Python,但是我相信各位肯定没有认真学,做作业就懵逼的那种~所以我都给大家准备好了!各种
- 本文研究的主要是python处理csv数据动态显示曲线,分享了实现代码,具体如下。代码:# -*- coding: utf-8 -*- &q
- 常用php函数实现及介绍countcount是我们经常用到的一个函数,其功能是返回一个数组的长度。count这个函数,其复杂度是多少呢? 一
- 最近遇到了Python访问SqlServer的问题,这里总结下。一、Windows下配置Python访问Sqlserver环境:Window
- SvnPeer.php <?php /** * * This class for execute the external progr
- 使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单
- -- 任意的测试表 代码如下:CREATE TABLE test_delete( name varchar(10), value INT )
- 内容摘要:在网页制作中,有许多的术语,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我们将会用到一些有关于HTML的基本
- 1、基本原理访问网站扫码登录页,网站给浏览器返回一个二维码和一个唯一标志KEY浏览器开启定时轮询服务器,确认KEY对应的扫码结果用户使用ap
- 本文实例讲述了php7 参数、整形及字符串处理机制修改。分享给大家供大家参考,具体如下:参数处理机制修改一、重复参数命名不再支持。重复的参数
- MySQL是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中