『与善仁』Appium基础 — 15、使用Appium的第一个Demo
我们使用Python语言作为测试脚本的编写语言。
执行脚本前提:
Android模拟器或者手机是开机状态。
使用确保电脑和Android设备进行了链接。
也就是使用ADB命令
adb connect链接设备,或者通过
adb devices命令能够查看到设备。开启Appium服务。
在Python的开发IDE中(PyCharm)中编写脚本如下:
"""
1.学习目标
掌握appium启动手机方法
2.操作步骤
1-说明:明确驱动对象(操作对象)
web自动化步骤:
1.指定启动浏览器
2.输入网址
3.继续其他操作...
APP自动化步骤:
要先传递如下信息:
系统名称: Android IOS
系统版本: 版本号
设备名称: 通过adb devices命令获取
APP包名: 打开哪个APP
APP启动名:进入APP哪个页面
2-导入appium中webdriver
3-添加启动参数
设备信息
系统名称: Android IOS
系统版本: 版本号
设备名称: adb devices
APP信息
APP包名: 打开哪个APP
APP启动名:进入APP哪个页面
4-启动app
webdriver.Remote()
5-操作app
6-关闭app
3.需求
启动Android模拟器中的设置APP
"""
# 1.导入appium
import time
from appium import webdriver
# 2.添加启动参数
# 就是Desired capabilities,是一个字典类型的对象。
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
}
"""
说明:
deviceName :
cmd进入命令行终端
输入adb connect 127.0.0.1:21503 链接逍遥模拟器
输入adb devices 获取设备名称
appPackage和appActivity获取:
首先在虚拟机中打开设置
输入命令adb shell dumpsys window windows | findstr mFocusedApp
在u0之后的就是包名和启动名com.android.settings/.Settings
"""
"""
提示:
platformName字段中Android和android大小写都可以。
deviceName 字段,在测试Android手机时,随意写都可以,比如123
因为deviceName字段是针对IOS系统的,
对于Android系统,该字段必须要有,但是内容可以随意写,且不能为空。
platformVersion 字段写两位也可以,能够运行。
"""
# 3.启动APP
# 声明手机驱动对象(实例化webdriver)
# 第一个参数为appium服务的地址,需要启动appium服务。
# 第二个参数为Desired capabilities对象
# 我们就先传入这两个参数就可以了。
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# http://127.0.0.1:4723/wd/hub 中/wd/hub这个是固定的,必须有,要求的。
# 上面的一步就已经把app启动起来了。
# 4.操作APP
# 先不对app做任何操作。
# 5.关闭APP
time.sleep(5)
driver.quit()
提示:
运行Appium代码注意事项:
1.保证设备(手机)和电脑连接成功的。
就是使用adb connect命令链接了设备,或者adb devices可以查看到设备名称。
2.运行Appium Server(服务是启动的)
3.执行测试代码即可。
注意:如果是第一次运行Appium脚本,会在你的手机中安装一个叫Appium Settings的App。
如下图所示:

最后我们来看一下Appium服务的日志大概都说了些什么内容,如下:
[Appium] Welcome to Appium v1.13.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
# 一个session
[HTTP] --> POST /wd/hub/session
# 传入Desired capabilities字典类型对象
[HTTP] {"capabilities":{"firstMatch":[{"platformName":"Android","appium:platformVersion":"7.1.2","appium:deviceName":"127.0.0.1:21503","appium:appPackage":"com.android.settings","appium:appActivity":".Settings"}]},"desiredCapabilities":{"platformName":"Android","platformVersion":"7.1.2","deviceName":"127.0.0.1:21503","appPackage":"com.android.settings","appActivity":".Settings"}}
# 启动AppiumDriver,创建回话
[W3C] Calling AppiumDriver.createSession() with args:
...省略部分信息...
# 然后启动一些ADB命令
[ADB] Found 2 'build-tools' folders under 'F:\DevInstall\envs\android-sdk-windows' (newest first):
[ADB] F:/DevInstall/envs/android-sdk-windows/build-tools/29.0.3
...省略部分信息...
[BaseDriver] Event 'newSessionStarted' logged at 1605778307025 (17:31:47 GMT+0800 (中国标准时间))
# 6d2f52a7-f71e-4842-98e9-22aff59a4b38 为sessionID
[W3C (6d2f52a7)] Cached the protocol value 'W3C' for the new session 6d2f52a7-f71e-4842-98e9-22aff59a4b38
...省略部分信息...
[BaseDriver] Event 'quitSessionFinished' logged at 1605778313510 (17:31:53 GMT+0800 (中国标准时间))
[W3C (6d2f52a7)] Received response: null
[W3C (6d2f52a7)] But deleting session, so not returning
[W3C (6d2f52a7)] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/6d2f52a7-f71e-4842-98e9-22aff59a4b38 200 1469 ms - 14
[HTTP]
提示:
- 安卓应用的后缀是
.apk,是AndroidPackage的缩写。- iOS安装包
.ipa,安装iOS测试版本,需要iOS开发将iPhone手机的UUID编号加入到开发者项目。
『与善仁』Appium基础 — 15、使用Appium的第一个Demo的更多相关文章
- 『动善时』JMeter基础 — 15、使用JMeter实现上传文件
目录 1.用于演示的项目说明 2.测试计划内包含的元件 3.HTTP请求界面内容 4.查看结果 5.总结 6.补充:MIME类型简介 (1)MIME说明 (2)常见类型 在上一篇文章[使用JMeter ...
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『与善仁』Appium基础 — 12、Appium的安装详解
目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...
- 『与善仁』Appium基础 — 16、APPium基础操作API
目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...
- 『与善仁』Appium基础 — 28、webview的操作方式
目录 1.先了解什么是Hybrid(混合) 2.识别Webview 3.context上下文 4.Webview和原生页面之前的切换 5.综合练习 我们之前说过的所有操作,都是对原生页面的操作. 在手 ...
- 『与善仁』Appium基础 — 10、Appium基本原理
目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- 『与善仁』Appium基础 — 18、元素定位工具(二)
目录 1.Appium Inspector介绍 2.Appium Inspector打开方式 3.Appium Inspector布局介绍 4.Appium Inspector工具的配置 5.Appi ...
- 『与善仁』Appium基础 — 20、Appium元素定位
目录 1.by_id定位 2.by_name定位 3.by_class_name定位 4.by_xpath定位 5.by_accessibility_id定位 6.by_android_uiautom ...
随机推荐
- 1. SSTI(模板注入)漏洞(入门篇)
好久没更新博客了,现在主要在作源码审计相关工作,在工作中也遇到了各种语言导致的一些SSTI,今天就来大概说一下SSTI模板注入这个老生常谈的漏洞 前言 模板引擎 模板引擎(这里特指用于Web开发的模板 ...
- pta天梯训练赛补题
7-1谁先倒 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒.两人 ...
- JVM详解(四)——运行时数据区-堆
一.堆 1.介绍 Java运行程序对应一个进程,一个进程就对应一个JVM实例.一个JVM实例就有一个运行时数据区(Runtime),Runtime里面,就只有一个堆,一个方法区.这里也阐述了,方法区和 ...
- linux性能优化基础——iommu相关配置
此篇文档介绍了IOMMU相关的信息: https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html iommu和vt-d都是io半虚拟 ...
- Scrum Meeting 0507
零.说明 日期:2021-5-7 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 测试 测试 cyy ...
- BUAA2020软工作业——提问回顾与个人总结
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- DDD领域驱动设计-案例建模设计-Ⅲ
1. 背景 参考<DDD领域驱动设计-案例需求文档>,本文将构建实体,聚合根详述领域驱动中的建模设计.构建实体,聚合根的一些原则或方法,将在后续文章中说明. 2. 建模设计 2.1. 实体 ...
- hdu 5185 Equation(分析+DP)
题意: Gorwin is very interested in equations. Nowadays she gets an equation like thisx1+x2+x3+⋯+xn=n, ...
- 求树的直径【两遍BFS】
两遍BFS.从任意一个点出发,第一遍可以找到直径的一端,从这端出发即可找到另外一端. 证明:从U点出发,到达V[画个图便清晰了] 1.如果U在直径上,则V一定是直径的一个端点. 2.如果U不在直径上. ...
- 第04课 OpenGL 旋转
旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 上一课中我教给您三角形和四边形的着色.这一课我将教您如何将这些彩色对象绕着坐标轴旋转.其实只需在上 ...