使用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模块的更多相关文章

  1. python自定义封装logging模块

    #coding:utf-8 import logging class TestLog(object): ''' 封装后的logging ''' def __init__(self , logger = ...

  2. python appium 封装获取toast方法

    获取toast text封装,传入toast 部分文本,返回全部文本 def get_toast_text(self,text): try: toast_loc = (By.XPATH, " ...

  3. Python +appium baseview

    封装python+appium 的baseview模块 from selenium.webdriver.support.ui import WebDriverWait from time import ...

  4. python封装configparser模块获取conf.ini值(优化版)

    昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的sect ...

  5. Python + Appium 自动化操作微信入门看这一篇就够了

    简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...

  6. Python(五)模块

    本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...

  7. Python基础之--常用模块

    Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...

  8. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  9. 将Python脚本封装成exe可执行文件 转

    将Python脚本封装成exe可执行文件 http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html  cx_freeze是用来将 Pyt ...

随机推荐

  1. java自定义jar包让jmeter使用---给java参数化

    上一篇文章中,提到怎么生成jar包让jmeter使用,这次我们来试试做参数,因为发现调包的时候其实更多还是参数化,那么开始改造吧 1.在httpclientpost这个类中替换参数,且打印参数 imp ...

  2. Nginx - 安装并启动Nginx

    1 - 安装Nginx 官网步骤:http://nginx.org/en/linux_packages.html#RHEL-CentOS [Anliven@h202 ~]$ sudo vim /etc ...

  3. 构建一个java环境的centos系统镜像并上传到阿里云镜像仓库

    编辑dockerfile 文件 FROM centos MAINTAINER zhaoweifeng ENV LANG en_US.UTF-8 RUN /bin/cp /usr/share/zonei ...

  4. 【Spring Boot学习之五】切面日志管理

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.log4j 常见方式:log4j.properties + org.apache.log4j.Logger比如:l ...

  5. .Net Core 3 骚操作 之 用 Windows 桌面应用开发 Asp.Net Core 网站

    前言 曾经在开发 Asp.Net 网站时就在想,为什么一定要把网站挂到 IIS 上?网站项目的 Main 函数哪儿去了?后来才知道这个 Main 函数在 w3wp.exe 里,这也是 IIS 的主进程 ...

  6. 新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息

    新唐NDA102EC1中更改UUART1作为调试串口打印输出调试信息 参考网上STM32修改fputc(int ch, FILE *f),把串口打印函数printf()重定向到UUART1模块的端口输 ...

  7. Java白皮书(总结一些题目)

    java基础 1.      简述JVM的运行原理? Java平台由Java 虚拟机和Java 应用程序接口搭建,Java语言则是进入这个平台的通道, 用Java语言编写并编译的程序可以运行在这个平台 ...

  8. myssl.com SSL 检测

    配置正确了,就正常了. 与证书关系不大.

  9. Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch

    Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch,运行Hypergraph Neural Networks(HGNN) https://github.c ...

  10. SET key value [EX seconds] [PX milliseconds] [NX|XX]

    SET key value [EX seconds] [PX milliseconds] [NX|XX] 可用版本: >= 1.0.0 时间复杂度: O(1) 将字符串值 value 关联到 k ...