Appium+python自动化-元素定位uiautomatorviewer的使用
前言
环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.
uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。
一、启动uiautomatorviewer.bat
1.打开目录D:\androidsdk\android-sdk-windows\tools
2.双击启动,启动之后出现如下界面
3如果不喜欢双击启动的话,也可以在cmd里面通过指令启动
先cd到tools目录下,然后输入uiautomatorviewer.bat回车后启动服务
二、连接手机
1.cmd打开输入adb devices,确认手机已连上
2.打开手机要使用的APP页面,让屏幕处于点亮状态
3.点左上角安卓机器人按钮Devices Screenshot按钮刷新页面
三、定位元素
1.移动鼠标到需要定位的元素上,如搜索输入框
2.右下角可以看到元素对应的属性
text: 空
resource-id: cn.qysxy.daxue:id/iv_home_top_search
class: android.widget.ImageView
xpath: //android.widget.ImageView[@resource-id='cn.qysxy.daxue:id/iv_home_top_search']
四、点搜索框
1.前面一篇启动app后,休眠五秒,等待页面加载完成
2.通过id来定位到搜索框,然后点击
五、最终代码如下
# 布道官--首页 from appium import webdriver
from time import sleep
import os caps = {}
caps["platformName"] = "Android" # 平台名称
caps["platformVersion"] = "5.1.1" # 设备系统的版本号
caps["deviceName"] = "127.0.0.1:62001" # 夜神虚拟机
caps["appPackage"] = "cn.qysxy.daxue"
caps["appActivity"] = ".modules.login.LoginActivity"
caps["noReset"] = "true"
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps) # 隐式等待 ,如果没有找到"布道官"会报错
# driver.implicitly_wait(10)
# 获取结果文本
res_text = driver.find_element_by_id('cn.qysxy.daxue:id/tv_login_enterprise_name').text
assert res_text == '布道官'
六、元素定位
1.appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来
2.多的三种如下,在后面的会详细介绍
driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator()
driver.find_element_by_ios_uiautomation()
(第三个是ios的可以暂时不用管)
Appium+python自动化-元素定位uiautomatorviewer的使用的更多相关文章
- Appium + Python自动化 - 元素定位uiautomatorviewer
元素定位主要介绍如何使用uiautiomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.uiautiomatorviewer是android-sdk自带的一个元素定位工具,非常 ...
- appium+python自动化32-android_uiautomator定位进阶版
前言 上一篇介绍uiautomator的定位方式都是类似这种'new UiSelector().xxx("xxx")',看起非常长,我也记不住,这很不python.于是本篇优化了定 ...
- appium+python自动化30-list定位(find_elements)
前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...
- Appium+Python之元素定位和操作
一.常用识别元素的工具 uiautomatorviewer:Android SDK自带的一个工具,在tools目录下 二.元素定位 1.格式:find_element_by_定位方式(va ...
- appium+python自动化31-android_uiautomator定位
前言 appium就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 text 1.通过text文本定位语法 new UiSelector() ...
- appium+python自动化28-name定位
前言 appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了 name定位报错 1.最新版appium V1.7用name定位,报错: selenium.co ...
- selenium+python自动化元素定位
最近学习自动化测试,终于初步学习完成,需要进行博客日志总结,加深巩固自己的知识. 元素的八种定位方式 1.id 以百度为例子 我们在python输入的元素定位语法:bs.find_element_by ...
- selenium+python自动化-元素定位
自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 本篇主要讲几种基本的元素定位方法元素定位在这四个环节中是至关重要的,如果说按学习精力 ...
- appium+python自动化58-xpath定位
基本属性定位 以淘宝app为例,定位左上角扫一扫按钮 1.可以通过text文本定位到 //*[@text='text文本属性'] # 定位text driver.find_element_by_xpa ...
随机推荐
- MySQL中的执行计划explain
一.用法及定义: explain为sql的执行计划.在sql前面加上explain关键字即可 如:explain select * from tbl_emp; 名词解释: id:[操作表的顺序] 1. ...
- Android开发之adt bundle安装
这个学期开了一门手机游戏开发的课,所以就接触到了adt bundle,Android开发环境有三种方式,分别是JDK+SDK+Eclipse+ADT.JDK+adt-bundle与JDK+Androi ...
- Phpstorm 2020-01-04试了可用的激活码【亲测可用】WebStrom
[直接点击试用30天] http://myphp.vip/ 测试时间:2018-10-12可用(v2019.2) 测试时间:2019-12-24可用(v2019.2) 测试时间:2020-01-04可 ...
- 什么是kafka,怎么使用? (3)
上次我因为在windows上解压一个.gz的包没有解压出来,故需要在linux使用kafka,而且这kafka的快速开始上有个zookeeper的文件配置 所以我感觉有必要把dubbo-zookeep ...
- 消息总线:Spring Cloud Stream
最近在学习Spring Cloud的知识,现将消息总线:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]
- 【架构篇】ASP.NET Core 基于 Consul 动态配置热更新
背景 通常,.Net 应用程序中的配置存储在配置文件中,例如 App.config.Web.config 或 appsettings.json.从 ASP.Net Core 开始,出现了一个新的可扩展 ...
- R语言入门:向量初探
R语言主要用于统计,因此引入了向量这个概念将更好地进行统计计算,在其他无法引入向量的语言当中则会使用循环来计算一些大规模的数据,在R语言当中则不需要,下面我们来看看R语言当中向量的具体用法吧! 首先, ...
- CentOS7安装docker和docker-compose
1.安装docker # 使用yum安装docker yum -y install docker # 启动 systemctl start docker.service # 设置为开机自启动 syst ...
- Selenium实战(四)——unittest单元测试2(断言方法+discover()多测试用例的执行)
一.断言方法 方法 检查 版本 assertEqual(a,b) a==b assertNotEqual(a,b) a!=b assertTrue(x) bool(x) is True a ...
- netty 的事件驱动
netty 是事件驱动的,这里面有两个含义,一是 netty 接收到 socket 数据后,会产生事件,事件在 pipeline 上传播,二是事件由特定的线程池处理. NioEventLoop 轮询网 ...