python开发App基础操作API使用示例过程

目录
  • 手机控件查看工具uiautomatorviewer
    • 工具简介
    • 如何使用
  • APP元素定位操作
    • 通过id定位
    • 通过class定位
    • 通过xpath定位
    • WebDriverWait 显示等待操作
    • 发送数据到输入框
    • 清空输入框内容:
    • 获取元素的属性值
    • 获取元素在屏幕上的坐标
    • 获取app包名和启动名
  • APP元素事件操作API
    • swip滑动事件
    • scroll滑动事件
    • drag拖拽事件
    • 应用置于后台事件
  • APP模拟手势高级操作
    • 手指轻敲操作
    • 手指按操作
    • 等待操作
    • 手指长按操作
    • 手指移动操作

手机控件查看工具uiautomatorviewer

工具简介

用来扫描和分析Android应用程序的UI控件的工具.

如何使用

1.进入SDK目录下的tools目录,打开uiautomatorviewer
 2.电脑连接真机或打开android模拟器
 3.启动待测试app 
 4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图

5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息

APP元素定位操作

Appium常用元素定位方式

前置代码

from appium import webdriver
# server 启动参数
desired_caps = {}
# 设备信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app的信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'

# 声明我们的driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

通过id定位

方法:find_element_by_id(id_value) # id_value:为元素的id属性值

业务场景:

1.进入设置页面

2.通过ID定位方式点击搜索按钮

通过class定位

 方法:find_element_by_class_name(class_value) # class_value:为元素的class属性值

业务场景:

1.进入设置页面

2.通过搜索按钮

3.通过class定位方式点击输入框的返回按钮

通过xpath定位

方法:find_element_by_xpath(xpath_value) # xpath_value:为可以定位到元素的xpath语句

*** android端xptah常用属性定位:
      1. id ://*[contains(@resource-id,'com.android.settings:id/search')]
      2. class ://*[contains(@class,'android.widget.ImageButton')]
      3. text ://*[contains(@text,'WLAN')]

*** 模糊定位 contains(@key,value): value可以是部分值

业务场景:

1.进入设置页面

2.点击WLAN菜单栏

定位一组元素,注意element -> elements

应用场景为元素值重复,无法通过元素属性直接定位到某个元素,只能通过elements方式来选择,返回一个定位对象的列表.

WebDriverWait 显示等待操作

在一个超时时间范围内,每隔一段时间去搜索一次元素是否存在,
如果存在返回定位对象,如果不存在直到超时时间到达,报超时异常错误。

方法:WebDriverWait(driver, timeout, poll_frequency).until(method)

参数:

driver:手机驱动对象
timeout:搜索超时时间
poll_frequency:每次搜索间隔时间,默认时间为0.5s
method:定位方法(匿名函数)

使用示例:

WebDriverWait(driver, timeout, poll_frequency).until(lambda x: x.find_elements_by_id(id_value))

解释:
        1.x传入值为:driver,所以才可以使用定位方法.

函数运行过程:
        1.实例化WebDriverWait类,传入driver对象,之后driver对象被赋值给WebDriverWait的一个类变量:self._driver
        2.until为WebDriverWait类的方法,until传入method方法(即匿名函数),之后method方法会被传入self._driver
        3.搜索到元素后until返回定位对象,没有搜索到函数until返回超时异常错误.

业务场景:

1.进入设置页面

2.通过ID定位方式点击搜索按钮

发送数据到输入框

方法:send_keys(vaue) # value:需要发送到输入框内的文本

业务场景:

1.进入设置页面

2.点击搜索按钮

3.输入内容abc

解决输入中文问题:

server 启动参数增加两个参数配置

desired_caps['unicodeKeyboard'] = True
       desired_caps['resetKeyboard'] = True

清空输入框内容:

方法:clear()

获取元素的属性值

方法: get_attribute(value) # value:元素的属性

业务场景:

1.进入设置页面

2.获取搜索按钮的content-desc属性值

value='name' 返回content-desc / text属性值
value='text' 返回text的属性值
value='className' 返回 class属性值,只有 API=>18 才能支持
value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持

获取元素在屏幕上的坐标

方法:location

获取app包名和启动名

获取包名方法:current_package
获取启动名:current_activity

APP元素事件操作API

swip滑动事件

从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动

方法:swipe(start_x, start_y, end_x, end_y, duration=None)

参数:

1.start_x:起点X轴坐标
      2.start_y:起点Y轴坐标
      3.end_x:  终点X轴坐标
      4.end_y: 终点Y轴坐标
      5.duration: 滑动这个操作一共持续的时间长度,单位:ms

业务场景:

1.进入设置页面

2.从坐标(148,659)滑动到(148,248)

scroll滑动事件

从一个元素滑动到另一个元素,直到页面自动停止

方法:scroll(origin_el, destination_el)

参数:
      1.origin_el:滑动开始的元素
      2.destination_el:滑动结束的元素

业务场景:

1.进入设置页面

2.从存储菜单位置滑动到WLAN菜单位置

drag拖拽事件

从一个元素滑动到另一个元素,第二个元素替代第一个元素原本屏幕上的位置

方法:drag_and_drop(origin_el, destination_el)

参数:

1.origin_el:滑动开始的元素
      2.destination_el:滑动结束的元素

应用置于后台事件

APP放置后台,模拟热启动

方法:background_app(seconds)

参数:

1.seconds:停留在后台的时间,单位:秒

APP模拟手势高级操作

TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行

所有手势都要通过执行函数才会运行

手指轻敲操作

模拟手指轻敲一下屏幕操作

方法:tap(element=None, x=None, y=None)
方法:perform() # 发送命令到服务器执行操作

参数:

1.element:被定位到的元素
      2.x:相对于元素左上角的坐标,通常会使用元素的X轴坐标
      3.y:通常会使用元素的Y轴坐标

业务场景:

1.进入设置页面

2.点击WLAN选项

手指按操作

模拟手指按下屏幕,按就要对应着离开.

方法:press(el=None, x=None, y=None)
方法:release() # 结束动作,手指离开屏幕

参数:
      1.element:被定位到的元素
      2.x:通常会使用元素的X轴坐标
      3.y:通常会使用元素的Y轴坐标

等待操作

方法:wait(ms=0)

参数:

ms:暂停的毫秒数

业务场景:

1.进入设置页面

2.点击WLAN选项

3.长按选项5秒

手指长按操作

模拟手机按下屏幕一段时间,按就要对应着离开.

方法:long_press(el=None, x=None, y=None, duration=1000)

参数:

1.element:被定位到的元素
      2.x:通常会使用元素的X轴坐标
      3.y:通常会使用元素的Y轴坐标
      4.duration:持续时间,默认为1000ms

手指移动操作

模拟手机的滑动操作

方法:move_to(el=None, x=None, y=None)

参数:

1.el:定位的元素
      2.x:相对于前一个元素的X轴偏移量
      3.y:相对于前一个元素的Y轴偏移量

业务场景:

1.进入设置页面

2.向上滑动屏幕

练习:

业务场景:

1.进入设置页面

2.向上滑动屏幕到可见“安全”选项

3.进入到安全

4.点击屏幕锁定方式

5.点击图案

6.绘制图案

以上就是python开发App基础操作API使用示例过程的详细内容,更多关于python开发App基础操作API的资料请关注我们其它相关文章!

(0)

相关推荐

  • 用Python编写web API的教程

    自从Roy Fielding博士在2000年他的博士论文中提出REST(Representational State Transfer)风格的软件架构模式后,REST就基本上迅速取代了复杂而笨重的SOAP,成为Web API的标准了. 什么是Web API呢? 如果我们想要获取一篇Blog,输入http://localhost:9000/blog/123,就可以看到id为123的Blog页面,但这个结果是HTML页面,它同时混合包含了Blog的数据和Blog的展示两个部分.对于用户来说,阅读起来

  • python调用api实例讲解

    我们在做自动化运维的时候,经常需要调用api中的接口,不过很多人不知道具体的调用方法,在学习python中的requests库后,我们就可以很轻松的实现了. 1.说明 api接口调用是指使用python的requests库进行访问,基本上是get或post请求,有些接口会加密,然后必须使用对方提供给我们的公钥加密或解密,配上相应的参数进行访问,我们所需要的数据在请求后的返回结果中,所看到的基本上都是json格式的解析,所以请求后可以使用requests自带的json函数进行解析,然后提取所需的数

  • 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:主要用于服务端的开发.但是,PHP可不仅仅只能在互联网站上发展,一个PHP for Android(PFA)站点表示他们将可以发布编程模型.工具盒文档让PHP在Android上实现应用.该项目的主要赞助商是开源公司IronTec,PFA使用Scripting Layer for Android (SL4A),也就是Androd Scripting Envi

  • 对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server import make_server # 定义函数,参数是函数的两个参数,都是python本身定义的,默认就行了. def application(environ, start_response): # 定义文件请求的类型和当前请求成功的code start_response('200 OK', [('Con

  • 基于laravel制作APP接口(API)

    前期准备 前言,为什么做以及要做个啥 本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界. 这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成.但是做APP的后台就不一样了.开发了APP,想让读点数据进去,那我们就要去开发个后台了. laravel框架,是我最喜欢的PHP框架了,没有之一.去年就曾经用laravel写了我的个人网站但粗糙程度让我十分脸红,好了不扯了

  • python开发App基础操作API使用示例过程

    目录 手机控件查看工具uiautomatorviewer 工具简介 如何使用 APP元素定位操作 通过id定位 通过class定位 通过xpath定位 WebDriverWait 显示等待操作 发送数据到输入框 清空输入框内容: 获取元素的属性值 获取元素在屏幕上的坐标 获取app包名和启动名 APP元素事件操作API swip滑动事件 scroll滑动事件 drag拖拽事件 应用置于后台事件 APP模拟手势高级操作 手指轻敲操作 手指按操作 等待操作 手指长按操作 手指移动操作 手机控件查看工

  • python开发之文件操作用法实例

    本文实例讲述了python开发之文件操作用法.分享给大家供大家参考,具体如下: 先来看看官方API:os-Miscellaneous operating system interfaces 下面是我做的demo: import re import os import time #图片文件路径 image_path = 'E:\\test\\20130627_140132Hongten.jpg' #文件夹路径 dir_path = 'E:\\test\\hongten' #文件路径 file_ab

  • 用python开发一款操作MySQL的小工具

    项目地址 https://github.com/lishukan/directsql 安装 pip3 install directsql 导入 directsql 目前只提供三个外部类 __all__=["SqlGenerator","MysqlConnection","MysqlPool"] 导入方式 from directsql.sqlgenerator import SqlGenerator #该类用于生成sql语句 #下面是一个池化连接对

  • Python字典的基础操作

    目录 1.字典的概念 2.创建和使用字典 2.1 创建字典 3.字典的运算 3.1 字典的方法 1.字典的概念 Python中的字典数据类型和现实中的字典很像,它是以键值对(键和值的组合)的方式把数据组织到一起,可以通过键找到与之对应的值并进行操作.就跟字典中每次字(键)都会有对应的解释(值)一样,每个字和它的解释合在一起就是字典中的一个条目,而字典中通常包含了很多个这样的条目. 2.创建和使用字典 在Python中创建字典使用{}字面量语法,这跟创建集合的符号是一样的.但是字典的{}中的元素是

  • Python集合的基础操作

    目录 1.集合 2.创建集合 3.集合的运算 3.1 成员运算 3.2 交并差运算 3.3 比较运算 4.集合的方法 5.不可变集合 1.集合 Python中的集合和数学上的集合基本是没有区别的,是无序的,即不可以使用索引访问的,集合中是不能出现重复元素的. 2.创建集合 在Python中创建集合使用花括号{}字面量的方式,或者使用set()来创建一个集合.使用{}中必须至少含一个元素,创建空集合不能使用{},这样创建的是空字典,应该使用set()的方式来创建一个集合. # 使用字面量方法创建集

  • 利用python开发app实战的方法

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一些相对成熟的模块,于是便开始了动手实战,过程中发现这其中有很多坑,好在最终依靠google解决了,因此小记一番. 说在前面的话 python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习.或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,b

  • 用Python开发app后端有优势吗

    app后端开发学Python. Python的优点: 1.简单易学 Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语言本身. 2.开源 Python 是 FLOSS(自由/开源源码软件)之一,简单地理解就是,用户使用 Python 进行开发和发布自己编写的程序,不需要支付任何费用,也不用担心版权问题,即使作为商业用途,Python 也是免费的. 开源正在成为软件行业的一种发展趋势,现在有很多商业软件公司都开始将自

  • python boto和boto3操作bucket的示例

    boto操作 import datetime import boto.s3.connection from boto.s3.key import Key conn = boto.connect_s3( aws_access_key_id="123456", aws_secret_access_key="123456", host="127.0.0.1", port=8080, is_secure=False, calling_format=bot

  • python入门jupyter基础操作及文本用法

    目录 1.jupyter简介 2.jupyter基础操作 2.1windows更新pip库 2.2jupyter安装 2.3初次启动jupyter 2.4设置密码进入jupyter #再次运行jupyter 3.创建一个jupyter文本 4.jupyter文本的用法 4.1保存和下载文本 4.2运行和切换代码 4.3多个代码运行 1.jupyter简介 Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含代码.方程式.可视化和文本的文档. 它的用途包括:数据清理和

  • 利用Python中xlwt模块操作excel的示例详解

    目录 一.安装 二.创建表格并写入 三.设置单元格样式 四.设置单元格宽度 五.设置单元格背景色 六.设置单元格内容对齐方式 七.单元格添加超链接 八.单元格添加公式 九.单元格中输入日期 十.合并行和列 十一.单元格添加边框 一.安装 pip install xlwt 二.创建表格并写入 import xlwt # 创建一个workbook并设置编码 workbook = xlwt.Workbook(encoding = 'utf-8') # 添加sheet worksheet = workb

随机推荐