运用多设备,启动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

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

最新文章

  1. iOS XCode启用/关闭Clang Warnings
  2. Android下使用Properties文件保存程序设置
  3. mysql之常用操作
  4. Lintcode: Minimum Adjustment Cost
  5. perl编程中的map函数示例
  6. 手机控制电脑,在WIFI局域网下(关机,重启,遥控)
  7. Python学习笔记(十五):类基础
  8. Ubuntu通过使用PyCharm 执行调试 Odoo 8.0 可能的问题
  9. cut 命令详解
  10. SQL Server 2008 R2 添加登录账户配置权限
  11. Node.js+Koa开发微信公众号个人笔记(三)响应文本
  12. comtypes加word 2013批量将pdf转换为doc
  13. 定时任务Task
  14. meta标签大全(荐)
  15. 《F4+2》β冲刺第二天
  16. CentOS启动网络提示connect: Network is unreachable(配置静态路由)
  17. 20165203迭代和JDB测试
  18. 【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
  19. 去掉 NavigationBar 底部的那条黑线
  20. Git--删除远程仓库文件但不删除本地仓库资源

热门文章

  1. windows安装和重装系统后无法识别U盘
  2. (0524) rbf 格式 (intel)
  3. while循环内使用for循环
  4. springcloud(三) - 负载均衡Ribbon
  5. [笔记] 什么是Groovy?什么是Kotlin?
  6. 已知内存BUF单元开始的区域中存放有一组无符号字节数据,要求将这些数据按从小到大的顺序排列,排序后的数据依然放在原来的存储区中。
  7. Unity 在2D中实现LookAt,跟随鼠标转动
  8. SED fitting
  9. 蓝桥杯训练赛二-1169 问题 D: 绝对值排序
  10. pip安装清华源