前言

初学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.htmlhttps://www.cnblogs.com/mini-monkey/articles/11836690.html

appium常用API可参考:https://www.cnblogs.com/mini-monkey/articles/11841354.htmlhttps://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自动化实例【叮咚搜索加车为例】的更多相关文章

  1. appium+python 微信小程序的自动化

    sudo kill -9 $(lsof -i:8889 -t) mitmweb -p 8889 -s addons.py mitmdump -q  -p 8889 -s addons.py http: ...

  2. appium+python+unittest+HTMLRunner编写UI自动化测试集

    简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以py ...

  3. appium+python 【Mac】UI自动化测试封装框架流程简介 <一>

    为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...

  4. appium+python 【Mac】UI自动化测试封装框架介绍 <五>---脚本编写(多设备)

    目的: 通过添加设备号,则自动给添加的设备分配端口,启动对应的appium服务.注意:为了方便,将共用一个配置文件. 1.公共的配置文件名称:desired_caps.yaml platformVer ...

  5. appium+python 【Mac】UI自动化测试封装框架介绍 <二>---脚本编写(单设备)

    1.单设备的执行很简单,平时可多见的是直接在config中进行配置并进行运行即可.如下: # coding=UTF- ''' Created on // @author: SYW ''' from T ...

  6. appium+python 【Mac】UI自动化测试封装框架介绍 <四>---脚本的调试

    优秀的脚本调试定位问题具备的特点: 1.方便调试. 2.运行报错后容易定位出现的问题. 3.日志的记录清晰 4.日志可被存储,一般测试结果的分析在测试之后会进行,那么日志的存储将会为后期的分析问题带来 ...

  7. appium+python 【Mac】UI自动化测试封装框架介绍 <三>---脚本的执行

    我自己编写的脚本框架中,所有的脚本执行均放在一个py文件中,此文件作为启动文件执行,包含了运行此文件将执行脚本.分配设备端口.自启appium服务等. 详细的介绍待后期补充.

  8. appium+python 【Mac】UI自动化测试封装框架介绍 <七>---脚本编写规范

    脚本的使用,注释非常关键,无论自己的后期查看还是别人使用,都可以通过注释很明确的知道代码所表达的意思,明确的知道如何调用方法等等.每个团队均有不同的商定形式来写脚本,因此没有明确的要求和规范来约束.如 ...

  9. Appium+python 一个简单的登录测试实例

    # coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...

随机推荐

  1. Ad Hoc Distributed Queries / xp_cmdshell 的启用与关闭

    启用Ad Hoc Distributed Queries: reconfigure reconfigure 关闭Ad Hoc Distributed Queries: reconfigure reco ...

  2. poj1011 Sticks (dfs剪枝)

    [题目描述] George took sticks of the same length and cut them randomly until all parts became at most 50 ...

  3. regularexpressionvalidator验证控件使用实例

    一:电话号码验证: 格式如:0755-24256888:带分机格式:0755-24256888-282:手机:11位数字 (^(\d{3,4}-)?\d{6,8}$)|(^(\d{3,4}-)?\d{ ...

  4. Azkaban 2.5.0的详细安装过程

    准备下载Azkaban2.5.0:https://azkaban.github.io/downloads.htm 准备插件: 一.MySQL安装与配置 启动数据库并查看状态:sudo service ...

  5. Anaconda 安装及Python 多版本间切换

    安装 Anaconda 安装anaconda 安装较为简单,这里参考官方文档:https://docs.continuum.io/anaconda/install/linux.html 在文件目录下执 ...

  6. neo4j图形数据库Java应用

    CREATE (陈冠希:明星 {名称: "陈冠希"}), (王菲:明星 {名称: "王菲"}), (李亚鹏:明星 {名称: "李亚鹏"}), ...

  7. CentOS7搭建Storm集群及基础操作

    前提 安装Kafka前需要先安装zookeeper集群,集体安装方法请参照我的另一篇文档 Storm安装 下载 wget https://mirrors.tuna.tsinghua.edu.cn/ap ...

  8. ReactiveObjC(RAC)的使用汇总

    RAC 指的就是 RactiveCocoa ,是 Github 的一个开源框架,能够帮我们提供大量方便的事件处理方案,让我们更简单粗暴地去处理事件,现在分为 ReactiveObjC 和 Reacti ...

  9. 5-基于TMS320C6678+XC7K325T的6U CPCIe高性能处理平台

    基于TMS320C6678+XC7K325T的6U CPCIe高性能处理平台 一.板卡概述      本板卡系自主研发,基于CPCI 6U架构,符合CPCI2.0标准.采用 DSP TMS320C66 ...

  10. spl_autoload_register() 函数实现的自动加载

    和Python用module来区分代码块不同,PHP按照命名空间来区分,开始学PHP的时候一心认定了如果想用 use 关键字来导入(Python的习惯说法)一个类或者函数或者其他对象的话,必须先inc ...