首页 > 编程语言 >【Appium_python】启动app,出现多次打开关闭导致失败问题,driver用单例模式(_new_)进行解决。

【Appium_python】启动app,出现多次打开关闭导致失败问题,driver用单例模式(_new_)进行解决。

时间:2023-02-07 11:13:05浏览次数:40  
标签:__ Appium python driver caps desired 单例 new cls

运用多设备,启动app多次出现打开又关闭问题,查看后是多次对driver进行实例化,就用单例的模式进行解决。

单例模式(Singleton Pattern)目的就是保证一个类仅有一个实例,每一次执行类名返回的对象,内存地址是相同的。

根据编写的代码特点就使用_new_方法实现

from appium import webdriver
from util.write_user_command import WriteUserCommand


class Singleton(object):
    driver = None

    def __new__(cls, i, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            orig = super(Singleton, cls)
            write_file = WriteUserCommand()
            devices = write_file.get_value('user_info_' + str(i), 'deviceName')
            port = write_file.get_value('user_info_' + str(i), 'port')
            desired_caps = dict()
            desired_caps['platformName'] = 'Android'
            desired_caps['automationName'] = 'UiAutomator2'
            # 接受中文输入
            # desired_caps['unicodeKeyboard'] = True
            # desired_caps['resetKeyboard'] = True
            desired_caps['noReset'] = True
            desired_caps['deviceName'] = devices
            desired_caps['app'] = 'D:\\Projects\\PycharmProjects\\plum\\apk\\xxxtV5.2.7.4_release.apk'
            desired_caps['appPackage'] = 'xx_package_name'
            # desired_caps['appWaitActivity'] = ''等到某个activity才去执行
            desired_caps['appActivity'] = '.xxxappActivity.WelcomeActivity'
            cls._instance = orig.__new__(cls, *args, **kwargs)
            cls._instance.driver = webdriver.Remote("http://127.0.0.1:" + str(port) + "/wd/hub", desired_caps)

        return cls._instance

    def __init__(self, i, *args, **kwargs):
        self.i = i


class BaseDriver(Singleton):
    def get_driver(self):
        return self.driver


if __name__ == '__main__':
    # driver = BaseDriver().get_driver()
    # appium -p 4725 -bp 4701 -U 127.0.0.1:21503(devices_name)
    pass

大致就是这样,涉及到别的从别的配置文件读取多设备的配置信息就不介绍了。

标签:__,Appium,python,driver,caps,desired,单例,new,cls
From: https://www.cnblogs.com/ninarming/p/17097728.html

相关文章

  • Python openpyxl使用教程
    1.安装openpyxl组件pipinstallopenpyxl-ihttps://mirrors.aliyun.com/pypi/simple/新建Excel#coding=utf-8fromopenpyxlimportWorkbookwb=Workbook()#......
  • python打印中文
    python3中将json.dumps()结果显示为中文解决json.dumps()这个方法是没有encoding这个参数的,要想将默认的ascii字符改为中文,应该将ensure_asciii设为Falseprint(json.du......
  • Python修改柱状图边缘柱子与图边界的距离
      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图、条形图最两侧的柱子与图像边缘之间距离的方法。  最近,绘制了一个水平的柱状图,但是发现图的上、下边距(不是......
  • python_sha256加密
    Python数据加解密技术_SHA256算法importhashlib#1、待加密的字符串str='helloworld'#2、实例化一个sha256对象sha256=hashlib.sha256()#3、调用update方法......
  • mac m2编译 python3.7.6
    下载https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz编译tar-zxvfPython-3.7.16.tgzcdPython-3.7.16.tgz./configure--prefix=/usr/local/python3.7......
  • 学编程PHP与Python都有哪些区别?
    对于学习编程的小伙伴来说,不管是PHP还是python或者是java都是一门不错的编程语言,根据不同的应用场景选择适合的语言编程至关重要。那么学编程用PHP与Python语言都有哪些区......
  • 该如何学习 Python?
    在之前一个学习交流群中,有位网友问我一个非常有代表性的问题,打算在这里和大家分享下。在我看来,这个问题的本质就是找到属于自己的学习方法。我把自己的经验分享给大家,希望......
  • 数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖
    原文链接:http://tecdat.cn/?p=23518最近我们被客户要求撰写关于银行拉新活动的研究报告,包括一些图形和统计输出。项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多......
  • Python 异步: 创建和运行异步任务(7)
    您可以从asyncio程序中的协程创建任务对象。任务提供独立调度和运行的协程的句柄,并允许查询、取消任务,以及稍后检索结果和异常。异步事件循环管理任务。因此,所有协程都成......
  • Python 高级编程之并发与多线程(三)
    目录一、概述二、并发与并行原理1)并行2)并发3)并发和并行区别三、Python多线程1)进程与线程关系2)Python多线程GIL介绍3)Python创建多线程1、thread2、threading(常用)4)守护线......