python单例模式selenium driver实现单例

article/2025/8/21 16:15:37

一、使用装饰器实现单例

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 = 1def __init__(self, x=0):self.x = xa1 = 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().driverdef Making_task_Button(self):Making_task_Button=self.driver.find_element_by_xpath(RES.Making_task_Button_xpth)return Making_task_Buttondef 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

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 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 GetSeleniumDriverclass My_task():def __init__(self):self.driver=GetSeleniumDriver().driverdef 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_Buttondef 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 GetSeleniumDriverimport timeclass BookCity_page_process(object):def __init__(self):self.driver=GetSeleniumDriver().driverdef 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 GetSeleniumDriverclass CreativeBooks(unittest.TestCase):@classmethoddef setUpClass(self):self.driver = GetSeleniumDriver().driversleep(2)@classmethoddef tearDownClass(self):passdef setUp(self):self.driver = GetSeleniumDriver().driverself.driver.get("http://t.com/")self.driver.maximize_window()sleep(1)Creative_books().Creative_books_Button().click()def tearDown(self):self.driver.delete_all_cookies()def testa(self):#新建图书Creative_books().CreatBook_Button().click()#输入书名Creative_books().Input_book_name().send_keys(u"A1一")#保存书名def testb(self):first = self.driver.current_window_handleCreative_books().Help_center_Button().click()


http://chatgpt.dhexx.cn/article/TFx392As.shtml

相关文章

python单例模式有什么用_python单例模式是什么

在python中,单例模式是一种常用的软件设计模式,该模式的主要目的是确保某一个类在内存中只能有一个实例对象;通过单例模式的方法创建的类在当前进程中只有一个实例对象。单例模式分为:1、懒汉式,类一加载就创建对象&am…

Python设计模式-单例模式

设计思想 通过上面的介绍,我们可以知道单例模式最重要的就是要保证一个类只有一个实例并且这个类易于被访问,那么要怎么做才能保证一个类具有一个实例呢?一个全局变量使得一个对象可以被访问,但是这样做却不能防止你实例化多个对…

redis常用命令

redis常用命令 服务端客户端 服务端 1.使用help查看帮助文档 redis-server --help2.启动redis服务 sudo service redis start3.停止redis服务 sudo service redis stop4.重启redis服务 sudo service redis restart如果上面命令不行,用下面的命令: …

运维维护服务器redis常用命令

查看服务器是否有redis ps -ef | grep redis知道有redis存在了,查看下redis状态 systemctl status redis知道redis状态是运行态和只能本机访问后,想查看redis配置文件位置 cat /etc/systemd/system/redis.service知道redis配置在哪里,修改…

redis启动,停止,重启

1、查看redis是否在运行: ps aux | grep redis 2、启动redis: /etc/init.d/redis start 3、关闭redis:redis-cli shutdown 4、当设置密码后, 上面的关闭命令无效:带密码输入:redis-cli -a [password] 回…

centos中常用与redis相关的命令

该篇指令只针对完全不懂Linux,但是却不得不配置redis的同学(没错就是我) 安装过程就不阐述了,默认都安好了嗷。 启动redis 首先进入到redis安装位置的bin目录下,路径因人而异,这里用本人的路径作为示例 …

Linux重启 Redis自动启动

今天又要维护新的服务器了,翻了一下网上Redis自动启动,结果配置一大堆,其实很多没什么用,也不好理解,所以干脆把我自己的记录给写这里给大家参考。 第一步:创建Redis启动服务 在系统开机启动项目录 /lib/…

windows 重启redis的方法

目录 打开本地的文件夹 选中文件的路径输入cmd 在cmd命令窗口中输入以下的指令 指令的内容以及对应的命令含义 前言: 最近在本地搭建redis环境,突然发现本地的redis启动失败了,使用reids的启动命令也不行,于是找了不少的方法&…

redis linux 重启命令行,redis 如何重启? linux下请输入命令不要用kill 的方式

噜噜哒 1、如果是用apt-get或者yum install安装的redis,可以直接通过下面的命令停止/启动/重启redis:/etc/init.d/redis-server stop/etc/init.d/redis-server start/etc/init.d/redis-server restart2、如果是通过源码安装的redis,则可以通过…

redis重启命令Linux,Redis启动、配置 及 常用命令-Go语言中文社区

启动 Redis 服务 src/redis-server或者src/redis-server redis.conf 注:src/redis-server 会不加载redis.conf配置文件,提示: Warning: no config file specified, using the default config. 标题 而:src/redis-server redis.conf 为载入redis.conf配置的启动方式 标题 sr…

Windows环境下redis重启

在redis安装的目录下打开cmd窗口 输入以下命令打开启动redis redis-server redis.windows.conf 如果提示 Creating Server TCP listening socket *:6379: bind: No error,需要重启redis 一、重启步骤: 1、依次输入以下指令 redis-cli -h 127.0.0.1…

如何停止/重启/启动Redis服务

如何停止/重启/启动Redis服务 一、命令行直接启动/停止/重启redis1、启动redis服务及验证2、停止redis服务及验证3、重启redis服务及验证 二、通过redis的相关配置信息关闭/启动redis1.关闭 redis服务及验证2.启动redis服务及验证 叮嘟!最近做项目学习用到了Redis&a…

如何停止重启启动Redis服务

如何停止/重启/启动Redis服务 一、命令行直接启动/停止/重启redis 1、启动redis服务及验证2、停止redis服务及验证3、重启redis服务及验证 二、通过redis的相关配置信息关闭/启动redis 1.关闭 redis服务及验证2.启动redis服务及验证 叮嘟!最近做项目学习用到了Re…

语音识别,标注数据

切割音频文件 from pydub import AudioSegment from pydub.silence import split_on_silence import ossound AudioSegment.from_mp3("E:/data/AcsData/zfBX/hw202003301111246_23401.wav") loudness sound.dBFS outputPath "E:/data/AcsData/zfBX/output/&…

音频标注工具

ASR音频标注工具 前言一、音频标注工具二、使用环境总结 前言 为了方便查看音频标注质量,使用图形化音频标注工具可以更方便的对音频文本内容进行编辑。 下载链接: https://download.csdn.net/download/weixin_54971024/85426511 一、音频标注工具 主页…

数据标注工具、平台、类型

华为云ModelArts标注工具,支持的标注类型有: 图片: imgClassify 图像分类:识别一张图片中是否包含某种物体 objDetect 物体检测:识别出图片中每个物体的位置及类别 imgSevering 图像分割:根据图片中的物体…

Python-实现语音识别并批处理标注(重命名)文件

由于我的测试经常需要对音频文件内容标注(根据语音的内容用拼音标注),一个一个人工标注很费时费力!那有没有简单点的方法,答案是有!!!一起学习吧~ 1.在百度AI开发平台获取AppID、AP…

景联文科技提供语音数据采集标注服务

什么是语音标注? 语音标注是数据标注行业中一种常见的标注类型,是由标注员对语音信息进行不断标注转写,让人工系统进行进一步学习,标注后的数据主要用于人工智能机器学习,相当于给计算机系统装上了“耳朵”&#xff0…

语音数据标注工具与平台/公司

最近在做语音深度学习的项目,整理了一下语音数据标注工具和语音标注平台,供大家参考 语音标注工具--Praat Praat是目前已经成为比较流行也比较专业的语音处理的软件,可以进行语音数据标注、语音录制、语音合成、语音分析等等,具有…