(appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】
前言
初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化。小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是如何实现自动化的。
前提:已安装配置好appium+python自动化环境
一、连接手机启动app
1,连接手机
-手机USB连接电脑
-手机打开开发者模式、USB调试功能
2,基础信息配置
基础连接信息如下(以叮咚app为例):

'platformName': 操作平台
'deviceName': 设备名称
'platformVersion':系统版本号
'appPackage': apk包名
'appActivity':apk activity
'noReset': 在此会话之前不要重置应用程序状态,即非初始化。参数值:true, false
更多配置参数信息可参考:https://www.cnblogs.com/D666/p/9165086.html
备注:获取设备号/ app包名/activity详情可查看 https://www.cnblogs.com/mini-monkey/p/11691862.html
3,启动appium服务
1,启动appium获取appium服务地址

appium启动页获取host和port,默认配置host:0.0.0.0,port:4723,
即默认appium服务地址为:http://0.0.0.0:4723/wd/hub(若配置其他host&port更新http://后内容为host:port即可)
4,连接设备,启动app

Remote括号中地址:appium服务地址(步骤3中获取)
二、编写搜索脚本
1,打开定位工具uiautomatorviewer,查看元素属性
关于定位工具的可参考:https://www.cnblogs.com/mini-monkey/p/11819549.html
点击Android adk->tools->automatorviewer

鼠标选中页面元素,右下角查看元素属性
2,定位元素
元素定位方法可参考:https://www.cnblogs.com/mini-monkey/articles/11836650.html、https://www.cnblogs.com/mini-monkey/articles/11836690.html
appium常用API可参考:https://www.cnblogs.com/mini-monkey/articles/11841354.html、https://www.cnblogs.com/mini-monkey/articles/11841370.html
一般元素id存在时,先根据id定位,其次是class,然后再是xpath、uiautomator等去定位。优先级不一定是这样的,小编一般习惯这样定位,大家可以根据自己的喜好选择定位方式。
叮咚搜索商品加车过程如下:
首页点击搜索框->输入搜索关键词,点击搜索btn->搜索结果页,点击加车btn->点击购物车图标(进入购物车页)
实现搜索加车自动化便可根据以上步骤展开编写,叮咚搜索商品加车脚本如下(以搜索鸡翅为例):

备注:由于app有的页面加载需要时间,可在需要等待的地方添加等待时间。
三、实例代码详情
叮咚搜索加车的总代码如下:
# 叮咚appium实例
from appium import webdriver
from time import sleep # 基础信息配置
desired_caps = {
'platformName': 'Android', # 平台
'deviceName': 'emulator-5554', # 手机设备名称
'platformVersion': '6.0.1', # 安卓系统版本号
'appPackage': 'com.yaya.zone', # apk包名
'appActivity': 'com.yaya.zone.activity.SplashActivity', # apk activity
'unicodeKeyboard': True, # 设置编码格式为unicode
'resetKeyboard': True, # 隐藏手机键盘
'noReset': True, # 非初始化
} driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps) # 启动app
sleep(5) # 等待叮咚首页加载【app加载页面有时需加载一段时间,故可在需要加载等待的地方可加上等待时间】 driver.find_element_by_id("com.yaya.zone:id/ll_search").click() # 首页-点击搜索框
sleep(1)
driver.find_element_by_id("com.yaya.zone:id/et_what_search").send_keys("鸡翅") # 输入关键词
sleep(1)
driver.find_element_by_id("com.yaya.zone:id/btn_cancel").click() # 点击搜索btn
sleep(3)
driver.find_element_by_id("com.yaya.zone:id/iv_add_cart").click() # 搜索结果页-点击加车btn
sleep(1)
driver.find_element_by_id("com.yaya.zone:id/iv_cart").click() # 点击购物车btn,进入购物车页
sleep(3)
(appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】的更多相关文章
- appium+python 微信小程序的自动化
sudo kill -9 $(lsof -i:8889 -t) mitmweb -p 8889 -s addons.py mitmdump -q -p 8889 -s addons.py http: ...
- appium+python+unittest+HTMLRunner编写UI自动化测试集
简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以py ...
- appium+python 【Mac】UI自动化测试封装框架流程简介 <一>
为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <五>---脚本编写(多设备)
目的: 通过添加设备号,则自动给添加的设备分配端口,启动对应的appium服务.注意:为了方便,将共用一个配置文件. 1.公共的配置文件名称:desired_caps.yaml platformVer ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <二>---脚本编写(单设备)
1.单设备的执行很简单,平时可多见的是直接在config中进行配置并进行运行即可.如下: # coding=UTF- ''' Created on // @author: SYW ''' from T ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <四>---脚本的调试
优秀的脚本调试定位问题具备的特点: 1.方便调试. 2.运行报错后容易定位出现的问题. 3.日志的记录清晰 4.日志可被存储,一般测试结果的分析在测试之后会进行,那么日志的存储将会为后期的分析问题带来 ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <三>---脚本的执行
我自己编写的脚本框架中,所有的脚本执行均放在一个py文件中,此文件作为启动文件执行,包含了运行此文件将执行脚本.分配设备端口.自启appium服务等. 详细的介绍待后期补充.
- appium+python 【Mac】UI自动化测试封装框架介绍 <七>---脚本编写规范
脚本的使用,注释非常关键,无论自己的后期查看还是别人使用,都可以通过注释很明确的知道代码所表达的意思,明确的知道如何调用方法等等.每个团队均有不同的商定形式来写脚本,因此没有明确的要求和规范来约束.如 ...
- Appium+python 一个简单的登录测试实例
# coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...
随机推荐
- BZOJ 1100 &&luogu 3454(计算几何+KMP)
题面 给定一个多边形,求对称轴数量. 分析 初看这似乎是一道计算几何的题目,但是如果暴力枚举对称轴,再去判断对称轴两边的边和角是否相等,时间复杂度为\(O(n^2)\),显然会TLE 问题转换 顺时针 ...
- 本地启oracle实例服务无法重启,协议适配器错误
今天遇到一位朋友的oracle实例服务无法起来,启动时报错: 分析的原因是可能早上服务器突然断电造成的,经过对tns的测试 经过我们讨论和诊断,最后诊断的处理方法是将实例删了重装,处理后服务恢复正常: ...
- 数据挖掘 workfolw 总结
个人将数据挖掘的流程简单表示为“ 数据 → 特征 → 模型 ”. 首先,明确问题的性质和任务(分类.回归.聚类.推荐.排序.关联分析.异常检测等): 其次,理解数据(含义.类型.值的范围),并通过 ...
- Codeforces Round #503 (by SIS, Div. 2) C. Elections (暴力+贪心)
[题目描述] Elections are coming. You know the number of voters and the number of parties — n and m respe ...
- ActiveMQ的介绍及使用
一.消息中间件概述 什么是消息中间件 发送者将消息发送给消息服务器,消息服务器将消感存放在若千队列中,在合适的时候再将消息转发给接收者. 这种模式下,发送和接收是异步的,发送者无需等待; 二者的生命周 ...
- 通过express来打造api服务器
通过express来打造api服务器[ 后端接口 ] 1.步骤 1.通过脚手架创建项目 const express = require('express'); const router = expre ...
- PREPARE - 创建一个准备好的查询
SYNOPSIS PREPARE plan_name [ (datatype [, ...] ) ] AS statement DESCRIPTION 描述 PREPARE 创建一个已准备好的查询. ...
- file 显示文件的类型
1. 命令功能 file命令是确定文件类型,也可以辨识一些文件的编码格式.通过文件的头部信息来获取文件类型.windows是通过扩展名来确定文件类型. 2. 语法格式 file [option] ...
- PDO扩展
<?php class db extends PDO { private $error; private $sql; private $bind; private $errorCallbackF ...
- 【leetcode】1028. Recover a Tree From Preorder Traversal
题目如下: We run a preorder depth first search on the root of a binary tree. At each node in this traver ...