前言

环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.

uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。

一、启动uiautomatorviewer.bat

1.打开目录D:\androidsdk\android-sdk-windows\tools

1472105236126324.png850x502 53 KB

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的使用的更多相关文章

  1. Appium + Python自动化 - 元素定位uiautomatorviewer

    元素定位主要介绍如何使用uiautiomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.uiautiomatorviewer是android-sdk自带的一个元素定位工具,非常 ...

  2. appium+python自动化32-android_uiautomator定位进阶版

    前言 上一篇介绍uiautomator的定位方式都是类似这种'new UiSelector().xxx("xxx")',看起非常长,我也记不住,这很不python.于是本篇优化了定 ...

  3. appium+python自动化30-list定位(find_elements)

    前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...

  4. Appium+Python之元素定位和操作

    一.常用识别元素的工具 uiautomatorviewer:Android SDK自带的一个工具,在tools目录下     二.元素定位   1.格式:find_element_by_定位方式(va ...

  5. appium+python自动化31-android_uiautomator定位

    前言 appium就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 text 1.通过text文本定位语法 new UiSelector() ...

  6. appium+python自动化28-name定位

    前言 appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了 name定位报错 1.最新版appium V1.7用name定位,报错: selenium.co ...

  7. selenium+python自动化元素定位

    最近学习自动化测试,终于初步学习完成,需要进行博客日志总结,加深巩固自己的知识. 元素的八种定位方式 1.id 以百度为例子 我们在python输入的元素定位语法:bs.find_element_by ...

  8. selenium+python自动化-元素定位

    自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 本篇主要讲几种基本的元素定位方法元素定位在这四个环节中是至关重要的,如果说按学习精力 ...

  9. appium+python自动化58-xpath定位

    基本属性定位 以淘宝app为例,定位左上角扫一扫按钮 1.可以通过text文本定位到 //*[@text='text文本属性'] # 定位text driver.find_element_by_xpa ...

随机推荐

  1. input禁止输入后,触发事件,在苹果手机的页面会滚动

    在vue中,<input type="text" readonly="readonly" @click=""/>,点击跳转页面. ...

  2. hadoop3自学入门笔记(3)-java 操作hdfs

    1.core-site.xml <configuration> <property> <name>fs.defaultFS</name> <val ...

  3. Python中的用open打开文件错误,FileNotFoundError: [Errno 2] No such file or directory:

    学习python的文件处理,刚开始打开文件,代码如下 f = open('test_file.txt', 'r', encoding='UTF-8')RES = f.readlines()print( ...

  4. python变量加逗号,的含义

    逗号,用于生成一个长度为1的元组 >>> (1) 1 >>> (1,) (1,) >>> 1, (1,) 因此需要将长度为1的元组中元素提取出来可 ...

  5. Pikachu-URL重定向

    不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方.如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判 ...

  6. 使用FRP做内网穿透

    Github地址:https://github.com/fatedier/frp 什么是FRP? frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 h ...

  7. MyEclipse配置和使用Maven

    maven是管理项目的,myeclipse是编写代码的.第一次写项目都要配置好多东西,很麻烦,now 来看看怎样新建一个maven项目. 工具/原料   myeclipse maven 方法/步骤   ...

  8. Linux查看系统硬件信息命令

    Linux查看系统硬件信息命令 查看磁盘类型(是否SSD) cat /sys/block/sda/queue/rotational code:0 SSD盘 code:1 SATA盘 查看物理CPU个数 ...

  9. 基于TCP协议Socket通信

    服务器线程处理类 package demo4; import java.io.*; import java.net.Socket; /** * 服务器线程处理类 * @ClassName Server ...

  10. IO流学习之字符流(一)

    IO流(Input/Output) 简介: 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数 ...