第一次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自动化测试环境搭建
在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间.若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间.作为一个初 ...
随机推荐
- python 3.5学习笔记(第四章)
本章内容: 一..装饰器 二.生成器 三.迭代器 四.python中的内置方法 五.json & pickle 的数据序列化及反序列化 六.程序目录结构规范 七.补充内容 一.装饰器: 1.概 ...
- 黑羽压测 比 jmeter、locust、loadrunner 更简便,性能更强
视频讲解 点击下方链接,观看 讲解视频 https://www.bilibili.com/video/av60089015/ 动机 目前市场上对API接口做性能测试工具有 Jmeter.LoadRun ...
- HDFS的HA(高可用)
HDFS的HA(高可用) 概述 (1)实现高可用最关键的策略是[消除单点故障].HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA. (2)Hadoop2.0 之 ...
- 机器学习-FP Tree
接着是上一篇的apriori算法: FP Tree数据结构 为了减少I/O次数,FP Tree算法引入了一些数据结构来临时存储数据.这个数据结构包括三部分,如下图所示 第一部分是一个项头表.里面记录了 ...
- C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
项目需求,暂且叫A.B公司吧.我们公司需要从A公司哪里读取机器上的数据,放到我们数据库中.然后再将数据库中存的数据,提供一个接口,B公司来调用,大概这个意思. 好了,言归正传.这个是之前做好的界面,用 ...
- 脑裂是什么?Zookeeper是如何解决的?
什么是脑裂 脑裂(split-brain)就是"大脑分裂",也就是本来一个"大脑"被拆分了两个或多个"大脑",我们都知道,如果一个人有多个大 ...
- 总结暨JAVAWEB学习开篇(一)
匆匆,距上一篇博客已经过去7月有余,遂作文一篇总结暨JAVAWEB学习开篇. 1. 啃英文新概念.在多方讨教英语大佬后改变学习方式,通过背诵英文书籍以及多听英文录音来学习,效果还不错(等真正有成效了跟 ...
- Visual Studio 调试系列1 Debug 与 Release 模式
系列目录 [已更新最新开发文章,点击查看详细] Debug 模式 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序. 在Debug模式下调试,可以在断点处看到 ...
- 快速清理maven仓库中下载错误的文件
有时候使用pom文件下载依赖文件的时候突然网络异常,可能会出现依赖文件出现破损,导致怎么都不能使用,也没有重新下载. 之前解决办法是找到出现破损的文件并删除,让其重新下载,但是这样效率很低,也很难找到 ...
- spark 源码分析之二十一 -- Task的执行流程
引言 在上两篇文章 spark 源码分析之十九 -- DAG的生成和Stage的划分 和 spark 源码分析之二十 -- Stage的提交 中剖析了Spark的DAG的生成,Stage的划分以及St ...