【Appium_python】启动app,出现多次打开关闭导致失败问题,driver用单例模式(_new_)进行解决。
2024-10-21 09:50:28
运用多设备,启动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
大致就是这样,涉及到别的从别的配置文件读取多设备的配置信息就不介绍了。
最新文章
- iOS XCode启用/关闭Clang Warnings
- Android下使用Properties文件保存程序设置
- mysql之常用操作
- Lintcode: Minimum Adjustment Cost
- perl编程中的map函数示例
- 手机控制电脑,在WIFI局域网下(关机,重启,遥控)
- Python学习笔记(十五):类基础
- Ubuntu通过使用PyCharm 执行调试 Odoo 8.0 可能的问题
- cut 命令详解
- SQL Server 2008 R2 添加登录账户配置权限
- Node.js+Koa开发微信公众号个人笔记(三)响应文本
- comtypes加word 2013批量将pdf转换为doc
- 定时任务Task
- meta标签大全(荐)
- 《F4+2》β冲刺第二天
- CentOS启动网络提示connect: Network is unreachable(配置静态路由)
- 20165203迭代和JDB测试
- 【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
- 去掉 NavigationBar 底部的那条黑线
- Git--删除远程仓库文件但不删除本地仓库资源