第一次appium自动化
今天,自己独自做了一下app自动化,从搭环境到写好一个脚本花了很长时间。用的主要环境是python3.7+appium+sdk+夜神模拟器。appium环境搭建较于复杂,这里就不累述,参考百度教程。
首先先导入模块 from appium import webdriver,获取驱动对象。驱动对象可以帮助我们完成,脚本跟手机之间的交互操作。
然后声明手机驱动对象 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) 中间跟了2个参数http://127.0.0.1:4723/wd/hub 代表,appium的地址和端口。wd是指的webdriver对象,hub是中心节点。desired_caps是跟的是手机启动参数,参数及其含义如下:
desired_caps = {
"platformName":"Android", #平台名称
"platformVersion":"5.1", #系统版本号
"deviceName":"127.0.0.1:62001", #设备号,用adb devices查看
"appPackage":"com.xk.span.zutuan", #apk的包名 包名和启动名可以用这个命令查看:1,abd shell 进入shell目录下,2dumpsys activity | grep mFocusedActivity
"appActivity":".module.main.ui.activity.MainActivity" #apk启动名或者叫启动的界面
}
包名和启动界面获取方式:先打开手机中你要获取包名的APP,用adb命令查看:1,abd shell 进入shell目录下,2,dumpsys activity | grep mFocusedActivity 如下图:
参数以字典的形式组合起来,中间逗号隔开。定位元素先打开要操作app,然后在打开定位元素的工具,工具名为这个uiautomatorviewer.bat。安装了sdk就自带这个工具,去这个目录下找D:\software\SDK\android-sdk-windows\tools。具体以你的安装sdk目录位准。打开长这样。下图:
其他没啥好说的了,就是定位元素咯,有个注意事项,运行脚本脚本前,打开你appium服务端,然后检查下设备有没有连接上,可以帮你省下许多报错。上菜鸟代码:
# todo 实现自动登录美逛的功能,运行脚本前先用adb查看是否连接,运行成功后再次运行需退出登录
from appium import webdriver
import time class OpenMg():
def __init__(self):
'''打开APP及初始化工作'''
desired_caps = {
"platformName": "Android",
"platformVersion": "5.1",
"deviceName": "127.0.0.1:62001",
"appPackage": "com.xk.span.zutuan",
"appActivity": ".module.main.ui.activity.MainActivity"}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(6) def register_page(self):
'''由注册切换到输入账号界面'''
self.driver.find_element_by_id('com.xk.span.zutuan:id/tv_tab_txt4').click()
self.driver.find_element_by_id('com.xk.span.zutuan:id/stv_user_un_login').click()
time.sleep(0.01)
self.driver.find_element_by_id('com.xk.span.zutuan:id/stv_login_mobile').click()
time.sleep(0.01) def input_account(self, phone, password):
'''输入账号密码到个人中心界面'''
self.driver.find_element_by_id('com.xk.span.zutuan:id/et_mobile').send_keys(phone)
self.driver.find_element_by_id('com.xk.span.zutuan:id/password').click()
self.driver.find_element_by_id('com.xk.span.zutuan:id/et_password').send_keys(password)
self.driver.find_element_by_xpath('//*[@text="登录"]').click()
time.sleep(3.9)
self.driver.find_element_by_xpath('//*[@text="个人中心"]').click() def finally_result(self):
'''断言结果是否正确'''
if '邀请码: 182635' in self.driver.page_source:
print('邀请码正确,登录成功')
else:
print('邀请码错误,登录失败')
def click_exit(self):
'''点击退出,清理登录信息'''
time.sleep(0.5)
self.driver.find_element_by_id('com.xk.span.zutuan:id/iv_user_logout').click()
time.sleep(0.5)
self.driver.find_element_by_xpath('//*[@text="确定"]').click() def closed(self):
'''关闭驱动对象'''
time.sleep(3)
self.driver.quit() def main():
'''根据操作顺序,调用方法执行'''
mg = OpenMg()
mg.register_page()
mg.input_account('1582', 'mg123456')
mg.finally_result()
mg.click_exit()
mg.closed() if __name__ == '__main__':
main()
第一次appium自动化的更多相关文章
- appium自动化测试之UIautomatorviewer元素定位
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...
- Appium自动化部署及连接Appium服务
Appium自动化部署: 1)安装appium桌面程序安装:超链接 2)安装客户端 pip install appium-python-client 3)安装服务器 安装 Nodejs 4)连接app ...
- appium自动化的工作原理(1)
用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https: ...
- Appium自动化 - 设置unicodeKeyboard: True运行脚本后,手机输入时无法调出软键盘
问题背景 做appium自动化的时候,使用了UiAutomator1驱动,然后设置了UnicodeKeyboard 执行自动化脚本之后,玩手机的时候发现平时用的输入法键盘没法调出来了 'automat ...
- Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面介绍过根据id,clas ...
- 通过无线连接的方式来做 Appium 自动化
感谢TesterHome里各种大牛,提出的宝贵思路,我这里只是将他们的想法综合了一下,试出来的成果,谢谢大家分享你们的智慧. 简单说下背景: 由于公司要测试APP 产品的耗电问题,我们采取的办法很lo ...
- java+appium 自动化环境搭建
1.安装JDK1.7及以上 2.下载解压sdk并且配置环境变量: ANDROID_HOME:...\adt-bundle-windows-x86_64-20140702\sdk PATH:%ANDRO ...
- WiFi无线连接真机进行Appium自动化测试方法
有时需要测试APP 产品的耗电问题,但用自动化又面临了一个USB接电脑供电的问题,从而导致计算出来的功耗与手动跑,存在有很大的误差,因此可使用wifi无线连接到手机进行自动化测试,解决功耗问题. 前提 ...
- Appium自动化—浅谈iOS自动化测试环境搭建
在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间.若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间.作为一个初 ...
随机推荐
- TestNG的静态方法mock的步骤
最近团队内部对程序中使用大量的`静态方法`,而公司要求要有sonar扫描覆盖率的,因为在大量使用静态方法的地方若不mock,则覆盖率达不到.于是网上很少的文章讲解对静态方法的mock,大多都是如何使用 ...
- 【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)
目录 一. 模型的制作 1.1 生成字体模型 1.2 多表面贴图 二. 镜头及动画 三. 大作业总结 示例代码托管在:http://www.github.com/dashnowords/blogs 博 ...
- 端口,OSI7层模型,TCP的三次握手和四次挥手,进度条
1.端口: 端口是为了将同一个电脑上的不同程序进行隔离 IP是找电脑,端口是找电脑上的程序 MySQL是一个软件,帮助我们在硬盘上进行文件操作,默认端口是3306 Redis是一个软件,帮助我们在内存 ...
- 【Java中级】(二)集合框架
2.1.ArraList 1.自增长 容器的容量"capacity"会随着对象的增加,自动增长 只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题. 2.常用方法 关键字 ...
- python load,loads,dumps,dump区别
json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面演 ...
- GCD和扩展GCD
gcd(a, b)用于求解自然数a,b的最大公约数 int gcd(int a, int b) { ) return a; return gcd(b, a%b); } extgcd(a, b, x, ...
- jsp的简介(1)
一.什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%&g ...
- LVS + Keepalived + Nginx基于DR模式构建高可用方案
在大型网站中一般服务端会做集群,同时利用负载均衡器做负载均衡.这样有利于将大量的请求分散到各个服务器上,提升网站的响应速度.当然为了解决单点故障的问题,还会做热备份方案.这里演示利用LVS做负载均衡器 ...
- Apache ActiveMQ 实践 <一>
一.下载最新版本 ActiveMq http://activemq.apache.org/activemq-5152-release.html,下载目录如下: 二.创建项目 1.普通项目 添加 jar ...
- poj 3253 Fence Repair(优先队列+huffman树)
一个很长的英文背景,其他不说了,就是告诉你锯一个长度为多少的木板就要花多少的零钱,把一块足够长(不是无限长)的木板锯成n段,每段长度都告诉你了,让你求最小花费. 明显的huffman树,优先队列是个很 ...