Python +appium 封装desired_caps模块
使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下:
desired_caps = {"platformName": "Android",
"deviceName": "127.0.0.1:62001",
"platformVersion": "4.4.2",
# apk包名
"appPackage": "com.ss.android.article.news",
# apk的launcherActivity
"appActivity": "com.ss.android.article.news.activity.SplashActivity",
"unicodeKeyboard": True,
"resetKeyboard": True}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
但是换一个app的话就需要改动很多代码,很不方便,可以将参数在配置文件里
def desired_caps(self):
desired_caps = {}
desired_caps["platformName"] = self.data["platformName"]
desired_caps["deviceName"] = self.data["deviceName"]
desired_caps["platformVersion"] = self.data["platformVersion"]
desired_caps["appPackage"] = self.data["appPackage"]
desired_caps["appActivity"] = self.data["appActivity"]
desired_caps["noReset"] = self.data["noReset"]
desired_caps["unicodeKeyboard"] = self.data["unicodeKeyboard"]
desired_caps["resetKeyboard"] = self.data["resetKeyboard"] driver = webdriver.Remote("http://" + str(self.data["host"]) + ":" + str(self.data["port"]) + "/wd/hub", desired_caps)
配置文件使用的yaml文件
platformName: Android
platformVersion: 4.4.2
deviceName: 127.0.0.1:62001
appPackage: com.ss.android.article.news
appActivity: com.ss.android.article.news.activity.SplashActivity
noReset: True
unicodeKeyboard: True
resetKeyboard: True
host: 127.0.0.1
port: 4723
但是其实把参数写在了配置文件里。每次启动的时候还是需要打开appium服务。现在使用adb命令来启动appium,一起封装在desired_caps里面
class adb_start_appium(object):
def __init__(self):
with open('C://Users/EDZ/PycharmProjects/untitled/appium/desired_caps/desired_caps.yaml') as file:
self.data = yaml.load(file) def appium_start(self):
cmd = 'start /b appium -a ' + str(self.data['host']) + ' -p ' + str(self.data['port']) + ' -U ' + self.data['deviceName'] print('%s at %s' % (cmd, ctime()))
subprocess.Popen(cmd, shell=True, stdout=open('C://Users/EDZ/PycharmProjects/untitled/appium_SH/desired_caps/appium_log/'+str(self.data['port']) + '.log', 'a'), stderr=subprocess.STDOUT) def desired_caps(self):
desired_caps = {}
desired_caps["platformName"] = self.data["platformName"]
desired_caps["deviceName"] = self.data["deviceName"]
desired_caps["platformVersion"] = self.data["platformVersion"]
desired_caps["appPackage"] = self.data["appPackage"]
desired_caps["appActivity"] = self.data["appActivity"]
desired_caps["noReset"] = self.data["noReset"]
desired_caps["unicodeKeyboard"] = self.data["unicodeKeyboard"]
desired_caps["resetKeyboard"] = self.data["resetKeyboard"] driver = webdriver.Remote("http://" + str(self.data["host"]) + ":" + str(self.data["port"]) + "/wd/hub", desired_caps)
driver.implicitly_wait(8)
return driver
Python +appium 封装desired_caps模块的更多相关文章
- python自定义封装logging模块
#coding:utf-8 import logging class TestLog(object): ''' 封装后的logging ''' def __init__(self , logger = ...
- python appium 封装获取toast方法
获取toast text封装,传入toast 部分文本,返回全部文本 def get_toast_text(self,text): try: toast_loc = (By.XPATH, " ...
- Python +appium baseview
封装python+appium 的baseview模块 from selenium.webdriver.support.ui import WebDriverWait from time import ...
- python封装configparser模块获取conf.ini值(优化版)
昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的sect ...
- Python + Appium 自动化操作微信入门看这一篇就够了
简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- Python基础之--常用模块
Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...
- Python学习笔记-常用模块
1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...
- 将Python脚本封装成exe可执行文件 转
将Python脚本封装成exe可执行文件 http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html cx_freeze是用来将 Pyt ...
随机推荐
- python中将函数赋值给变量时需要注意的一些问题
python中将函数赋值给变量时需要注意的一些问题 变量赋值是我们在日常开发中经常会遇到的一个问题,本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习, ...
- Hadoop源码解读系列目录
Hadoop源码解读系列 1.hadoop源码|common模块-configuration详解2.hadoop源码|core模块-序列化与压缩详解3.hadoop源码|core模块-远程调用与NIO ...
- ubuntu 16 typora 安装 ,14系统的不管用。。
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE linuxidc@linuxidc:~ ...
- MBR和GPT分区
MBR是传统的分区表类型,最大缺点是不支持容量大于2T的硬盘.GPT则弥补了MBR这个缺点,最大支持18EB的硬盘,是基于UEFI使用的磁盘分区架构. 其中,目前所有的Windows系统均支持MBR, ...
- [转帖]/proc/sys目录下各文件参数说明
/proc/sys目录下各文件参数说明 https://blog.csdn.net/luteresa/article/details/68061881 一.前言 本文档针对OOP8生产环境,具体优 ...
- SPFA + 链式前向星(详解)
求最短路是图论中最基础的算法,最短路算法挺多,本文介绍SPFA算法. 关于其他最短路算法,请看我另一篇博客最短路算法详解 链式前向星概念 简单的说,就是存储图的一个数据结构.它是按照边来存图,而邻接矩 ...
- stompjs, websocket和nginx的配置
server { listen 8080; location /socket/ { proxy_pass http://socket_server/; proxy_s ...
- 用es6 封装的对数组便捷操作的算法
/* * @Description: 对数组的基本操作 * @LastEditors: Please set LastEditors * @Date: 2019-04-26 12:00:19 * @L ...
- 使用Powershell启用/关闭Windows功能
接上一篇博客,依旧是需要制作安装包,需要开启系统的MSMQ功能.这里就用到了dism.exe DISM全称是Deployment Image Servicing and Management(部署映像 ...
- .Net Core WebApi(3)—NLog
在.Net Core中,微软提供的内置的日志组件没有实现将日志记录到文件.数据库上.这里使用NLog替代内置的日志组件 1.在项目中引入NuGet包 NLog NLog.Web.A ...