当前位置:网站首页>Appium基础 — 使用Appium的第一个Demo
Appium基础 — 使用Appium的第一个Demo
2022-07-05 05:50:00 【测试-八戒】
我们使用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编号加入到开发者项目。
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料在下方链接如下
边栏推荐
- 2022 极术通讯-Arm 虚拟硬件加速物联网软件开发
- 1.13 - RISC/CISC
- One question per day 1447 Simplest fraction
- 剑指 Offer 35.复杂链表的复制
- Convolution neural network -- convolution layer
- Individual game 12
- Solution to the palindrome string (Luogu p5041 haoi2009)
- Codeforces Round #715 (Div. 2) D. Binary Literature
- 【Jailhouse 文章】Performance measurements for hypervisors on embedded ARM processors
- Pointnet++ learning
猜你喜欢
[practical skills] how to do a good job in technical training?
【Jailhouse 文章】Jailhouse Hypervisor
[practical skills] technical management of managers with non-technical background
Wazuh开源主机安全解决方案的简介与使用体验
CF1637E Best Pair
1.13 - RISC/CISC
Palindrome (csp-s-2021-palin) solution
Talking about JVM (frequent interview)
Smart construction site "hydropower energy consumption online monitoring system"
Implement an iterative stack
随机推荐
1.15 - 输入输出系统
Binary search template
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
Annotation and reflection
Sword finger offer 35 Replication of complex linked list
Brief introduction to tcp/ip protocol stack
剑指 Offer 04. 二维数组中的查找
“磐云杯”中职网络安全技能大赛A模块新题
LeetCode 0107.二叉树的层序遍历II - 另一种方法
Sword finger offer 04 Search in two-dimensional array
F - Two Exam(AtCoder Beginner Contest 238)
Control unit
从Dijkstra的图灵奖演讲论科技创业者特点
剑指 Offer 05. 替换空格
全排列的代码 (递归写法)
Educational Codeforces Round 107 (Rated for Div. 2) E. Colorings and Dominoes
7. Processing the input of multidimensional features
智慧工地“水电能耗在线监测系统”
游戏商城毕业设计
Full Permutation Code (recursive writing)