1.uiautomatorviewer

1.手机控件查看工具uiautomatorviewer

简介:用来扫描和分析Android应用程序的UI空间的工具

2.如何使用

1.进入SDK目录下的tools目录,打开uiautomatorviewer

2.电脑连接真机或模拟器

3.启动待测试app

4.点击uiautomatorviewer的左上角Device Screenshot,回生成app当前页面的UI控件截图

如下:

就可以浏览该控件的id、class、text等

2.APP元素定位操作

1.appium常用元素定位方式

  2.通过id定位

  代码实现:driver.find_element_by_id("com.android.settings:id/search").click()driver.quit()

 3.通过class定位

    代码实现:# id 点击搜索按钮driver.find_element_by_id("com.android.settings:id/search").click()# class 点击输入框返回按钮driver.find_element_by_class_name('android.widget.ImageButton').click()driver.quit()

4.通过xpath定位

    代码实现:# xpath 点击WLAN按钮driver.find_element_by_xpath("//*[contains(@text,'WLA')]").click()

5.通过id方式定位一组元素(element -> elements)

应用场景为元素值重复,无法通过元素属性直接定位到某个元素,只能通过elements

方式来选择,返回一个定位对象的列表

 代码实现:# 定位到一组元素title = driver.find_elements_by_id("com.android.settings:id/title")# 打印title类型,预期为listprint(type(title))# 取title返回列表中的第一个定位对象,执行点击操作title[0].click()

 6.WebDriverWait 显示等待操作

在一个超时范围内,每个一段时间去搜索一次元素是否存在,如果存在返回定位对象,

如果不存在知道超时时间到达,报超时异常错误

  方法:WebDriverWait(driver, timeout, poll_frequency).until(method)参数:1.driver:手机驱动对象2.timeout:搜索超时时间3.poll_frequency:每次搜索间隔时间,默认时间为0.5s4.method:定位方法(匿名函数)
  匿名函数: lambda x: x等价于python函数:def test(x):return x

3.app元素信息操作api

1.发送数据到输入框

  代码实现:# 点击搜索按钮driver.find_element_by_id("com.android.settings:id/search").click()# 定位到输入框并输入abcdriver.find_element_by_id("android:id/search_src_text").send_keys("abc")

2.获取元素的文本内容

 代码实现:text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")for i in text_vlaue:print(i.text)

3.获取元素的属性值

  代码实现:# 定位到搜索按钮get_value = driver.find_element_by_id("com.android.settings:id/search")print(get_value.get_attribute("content-desc"))

4.获取元素在屏幕上的坐标

 代码实现:# 定位到搜索按钮get_value = driver.find_element_by_id("com.android.settings:id/search")# 打印搜索按钮在屏幕上的坐标print(get_value.location)

5.获取app包名和启动名

  print(driver.current_package)print(driver.current_activity)

4.app元素时间操作api

1.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
  代码实现:# 滑动没有持续时间driver.swipe(188,659,148,248)# 滑动持续5秒的时间driver.swipe(188,659,148,248,5000)

2.scroll滑动事件

 从一个元素滑动到另一个元素,直到页面自动停止方法:scroll(origin_el, destination_el)参数:1.origin_el:滑动开始的元素2.destination_el:滑动结束的元素
  代码实现:# 定位到存储菜单栏el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]")# 定位到WLAN菜单栏el2 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")# 执行滑动操作driver.scroll(el1,el2)

5.app模拟手势高级操作

1.手指轻敲操作

 模拟手指轻敲一下屏幕操作方法:tap(element=None, x=None, y=None)方法:perform() # 发送命令到服务器执行操作参数:1.element:被定位到的元素2.x:相对于元素左上角的坐标,通常会使用元素的X轴坐标3.y:通常会使用元素的Y轴坐标
 代码实现:# 通过元素定位方式敲击屏幕el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")TouchAction(driver).tap(el).perform()# 通过坐标方式敲击屏幕,WLAN坐标:x=155,y=250# TouchAction(driver).tap(x=155,y=250).perform()

2.手指按操作

  方法:press(el=None, x=None, y=None)方法:release() # 结束动作,手指离开屏幕参数:1.element:被定位到的元素2.x:通常会使用元素的X轴坐标3.y:通常会使用元素的Y轴坐标
  代码实现:# 通过元素定位方式按下屏幕el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")TouchAction(driver).press(el).release().perform()# 通过坐标方式按下屏幕,WLAN坐标:x=155,y=250# TouchAction(driver).press(x=155,y=250).release().perform()

3.等待操作

 方法:wait(ms=0)参数:ms:暂停的毫秒数
  代码实现:# 点击WLANdriver.find_element_by_xpath("//*[contains(@text,'WLAN')]").click()# 定位到WiredSSIDel =driver.find_element_by_id("android:id/title")# 通过元素定位方式长按元素TouchAction(driver).press(el).wait(5000).perform()# 通过坐标方式模拟长按元素# 添加等待(有长按)/不添加等待(无长按效果)# TouchAction(driver).press(x=770,y=667).wait(5000).release().perform()

4.手指滑动操作

  模拟手机的滑动操作方法:move_to(el=None, x=None, y=None)参数:1.el:定位的元素2.x:相对于前一个元素的X轴偏移量3.y:相对于前一个元素的Y轴偏移量
    代码实现:# 定位到存储el = driver.find_element_by_xpath("//*[contains(@text,'存储')]")# 定位到更多el1 = driver.find_element_by_xpath("//*[contains(@text,'更多')]")# 元素方式滑动TouchAction(driver).press(el).move_to(el1).release().perform()# 坐标的方式滑动# TouchAction(driver).press(x=240,y=600).wait(100).move_to(x=240,y=100).release().perform()# 注意press连接一个move_to实际调用的是swip方法,可在log中查询,不要给相对坐标。

业务场景:

1.进入设置

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

3.进入到安全

4.点击屏幕锁定方式

5.点击图案

6.绘制图案

Appium基础操作相关推荐

  1. app自动化测试appium教程之三——appium基础命令(python)

    app自动化测试教程之三--appium基础命令(python) hello appium 基础操作API 教学视频参考b站课程,此文为学习记录 (免费的羊毛,要薅呀,筒子们~) 零基础入门移动自动化 ...

  2. APP自动化测试框架搭建(六)--uiautomator2、web-editor基础操作

    第一章 APP自动化环境搭建(Mac版) 第二章 APP自动化环境搭建(Windows版) 第三章 adb命令 第四章 元素定位.元素操作 第五章 APP自动化测试框架搭建 Python+Appium ...

  3. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

  4. 【opencv】(1) 基础操作:图像视频读取、图像截取、颜色通道

    主要内容有:图像及视频的读取和保存.图像显示.转换灰度图.图像截取.颜色通道提取和组合 那我们开始吧. 1. 图像操作 首先我们导入opencv库,彩色图像一般都是由RGB(红绿蓝)三颜色通道构成,灰 ...

  5. JavaのFile类基础操作之问题

    在上一章节,介绍了File类的基础操作,比如文件的创建,文件的删除等等.这一章节,将介绍在File类基础操作中遇到的问题. 1.路径分割符问题 在实际的软件开发与运行过程中,往往都会在Windows环 ...

  6. 计算机应用基础统考操作,全国统考计算机应用基础操作题

    全国统考计算机应用基础操作题 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .1.打开考生文件夹下的文件Word6.doc,完成 ...

  7. Docker 之 Docker基础操作

    第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1)   指定 IP,DNS 网络位启动Docker容器 a)  docke ...

  8. cameraraw面板大小调整_Camera Raw基础操作面板介绍

    大家好,我是摄影师:爱撒谎的猫. 今天我想和大家分享的内容是:Camera Raw基础操作面板介绍. 我们每次将RAW格式的图片文件拖入Photoshop中时,最先出现的都是Camera Raw的基础 ...

  9. MATLAB基础操作--命令窗口

    MATLAB基础操作–命令窗口 常用的赋值运算符-'='对变量进行赋值 x=9-5 x = 4 x-8=9 x-8=9 ↑ 错误: '=' 运算符的使用不正确.要为变量赋值,请使用 '='.要比较值是 ...

最新文章

  1. zabbix 监控端口,其他端口和此端口类似
  2. PMCAFF问答精选 | 对于用户反馈,产品经理需要第一时间给出回应吗?
  3. 笔记本上的CNN搞定了MNIST
  4. Fatal error in launcher: Unable to create process using ''之解决办法
  5. S5PV210体系结构与接口02:ARM编程模型 汇编指令
  6. C++-bit转hex(四位二进制转十六进制)
  7. php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
  8. Matlab与Access数据库的连接
  9. linux 模拟打电话,Android 调用打电话和发短信功能
  10. 《Beginning Linux Programming》读书笔记(一)
  11. boost::asio 网络传输错误码的一些实验结果(recv error_code)
  12. 23.3. DELETE
  13. java inner class_Java Inner Class 内部类
  14. c++语言 进行验证码识别,C++ 借助 Tesseract-OCR 识别乐讯新版验证码
  15. linux设置家目录,usermod更改用户家目录
  16. 【luogu P3802】小魔女帕琪(概率期望)
  17. Exp9 Web安全实践基础 20154328 常城
  18. 2015美团校招部分笔试题
  19. 左神进阶班-KMP算法
  20. python爬虫篇,零基础学爬虫之精华版

热门文章

  1. python中复数表达形式_在Python中实现复数比较?
  2. 回文串问题(leetcode 125. 验证回文串 c#)
  3. android 读写sd卡的权限设置
  4. word 文本框插入图片
  5. 关于人像后期处理基础的相关技术步骤
  6. 接入小程序客服(java版教程),处理第一次主动推送会话超时问题
  7. 计算机上是如何注明固态硬盘的,笔记本固态硬盘不见了怎么回事_笔记本电脑固态硬盘盘符不显示如何解决-win7之家...
  8. Back键和Home键的屏蔽
  9. Ubuntu报错的情况及解决方法记录
  10. javasript的单线程和多线程