appium自动化测试之UIautomatorviewer元素定位

标签(空格分隔): uiautomatorviewer元素定位


前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具体介绍一下关于UIautomatorviewer的元素定位:

所有的关于自动化的测试,其实都是通过定位页面的元素,识别元素来,来操作进行界面的操作,从而进行判断是否符合一个预期的结果的;

下边主要介绍一个uiautomatorviewer这个工具,uiautomatorviewer是Android-sdk自带的一个元素定位工具,非常好用,使用UIautomatorviewer,你可以查看一个应用的UI来查看应用的布局和组件以及相关的属性;

  • 启动UIautomatorviewer.bat文件:

    打开对应的安装sdk的目录,找到对应的tools文件(mac电脑的同学:/Users/用户/Library/Android/sdk/tools/bin目录下,我也找了好久),然后打开:uiautomatorviewer.bat文件:
  • 双击:.bat文件

  • cmd adb devices

    查看设备是否连接上,然后点击uiautomatorviever界面的第二个控件:

  • 可以通过鼠标的移动定位具体的元素:
  • 右下角是一些元素的定位属性:
  • 前面写过的关于:启动APP的,还有一些appium配置的,这里不再赘述了,大家自行研究,要知道这段代码都差不多:
desired_caps = {
"platformName": "Android",
#小米手机
# "deviceName": "09630c80",
# "platformVersion": "4.4.4",
#360手机
"deviceName": "8681-M02-0x253b1876",
"platformVersion": "5.1",
"appPackage": "*****",
"appActivity": "*****",
"unicodeKeyboard":True,
"resetKeyboard":True}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(5)
driver.find.element_by_id("***").click()
  • appium 的webdriver提供了11种,常规的元素的定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入,driver.find_element_by然后会自动的匹配出来

如图所示的多的三种地位方式,第三个是iOS的用的,我们可以先不考虑;

uiautomatorviewer是Android自带的,其实apium自己也可以有自己的定位方式:inspector

其实:我感觉Mac电脑用appium的inspector很好用,但是Windows就不太好用了,inspector是appium自己带的一款定位工具:

设置appium

1.先不用启用appium

2.点开Android setting界面(机器人图标)

3.勾选ApplicationPath ,添加到被测APP的路径

4.Devices name处添加设备名称(adb devices 查看到的)

通过上述的方法可以查看:apk的包名,和LaunchActivity

例如:淘宝APP

二、开启appium

    1.手机确保连接电脑(adb devices查看)

    2.点appium右上角三角形图标,会启动服务

    3.这时候可以看到手机上安装淘宝应用,并会启动淘宝

    4.点appium右上角的搜索图标

    5.点Inspector Window界面的 Refresh 按钮刷新界面

三、Ispector Window

    1.手机上打开需要单位元素的界面,然后点Refresh按钮刷新

    2.左边菜单树,可以挨个点开

    3.如果想单位界面上的“是”和“否”按钮,从菜单树就可以看到这两个元素的结构

Remote远程控制:

代码的开始:driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub',

desired_caps)很多人不知道是怎么来的?

这里简单介绍一下:

一般来说appium中127.0.0.1这个地址的默认的不需要修改。在做自动化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了。想想看,如果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚本,在自动化机器上运行脚本,这样工作自动化两不误,是不是很爽呢?

设置IP:

1.打开appium>General Setting界面



2.这里用个appium默认的服务端地址127.0.0.1端口4723,一般在自己机器上调试,无需修改

二、访问地址

    1.代码里面的那个地址到底指向的是哪里呢?

启动appium服务后,在浏览器输入:http://127.0.0.1:4723/wd/hub。出现如下图所示,说明服务启动成功,可以把appium看出是一个服务端。



三、配置测试机

    1.一台工作电脑,一台跑自动化测试的电脑,如何用工作的电脑远程控制自动化测试的那台电脑呢?

    2.测试电脑上的appium服务地址改成本机IP地址如:172.17.1.165(这里要是本机的ip地址!!!!!)



3.启动测试电脑上的appium。



四、远程操作

    1.在自己工作电脑上打开浏览器输入:172.17.1.165:4723/wd/hub。这一步很重要,一定要看到如下界面,确认远程链接成功。

同时代码里面的IP也要对应的修改一下;

3.以上环境准备好后,在测试机器上运行脚本,于是测试机器上可以自动运行了;

输入中文的问题:

在做APP的自动化测试时候,我们会遇到输入中文的问题,那怎么版本呢?

我们可以采取:屏蔽软件盘,绕过手机软件盘的方法,解决输入中文的问题;

通常我们会使用:元素.send_keys(u"hao")

2.运行脚本:

首先我们要确认手机的输入法是什么输入法,如果默认是中文的输入法,启动后出现下面的情况,无法输入成功;



3.于是我们可以吧手机的输入法变成英文输入法,那么我们就不能输入中文了,那要怎么办呢?

屏蔽软件键盘:

1.通过前面的操作,大概可以知道,在APP里面输入字符串,是调用的是软键盘输入的,有没有办法像selenium一样,直接send_keys绕过键盘输入呢?

2.于是可以想办法屏蔽软键盘,只需要在desired_caps{}设置里面加两个参数()

from appium import webdriver
import time
desired_caps={
'platforName':'Android'
'deviceName':'*****'
'platformVersion':'5.0'
'appPackage':'****'
'appActivity':'***'
'unicodeKeyboard':True
'resetKeyboard':True}

注意:

unicodeKeyboard是使用unicode编码方式发送字符串;

resetKeyboard是将键盘隐藏起来;

使用上述的代码后:

在send_keys(u'学习测试')

注意2:输入使用真机测试时候,发现测试完毕之后,输入不能用了,这时候怎么办呢?

答案:

我们需要进入到设置--输入法设置,把对应的输入法修改过来,就可以了,修改为系统的,或者自己常用的就行了;

appium自动化测试之UIautomatorviewer元素定位的更多相关文章

  1. python+Appium自动化:H5元素定位

    问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...

  2. python+Appium自动化:id元素定位

    元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...

  3. python+Appium自动化:各种元素定位方法

    name定位 driver.find_element_by_name('飞利浦净水').click() 测试结果报错:selenium.common.exceptions.InvalidSelecto ...

  4. Selenium自动化测试之学会元素定位

    这是我经常被问到的一个问题,也是我很讨厌回答的问题,因为要想回答这个问题需要知道上下文.什么样式的元素,有哪些属性,是否有表单嵌套,都尝试了哪些定位方法...而且没几个提问者能事先详细的说明这些.哪儿 ...

  5. 5、通过Appium Desktop实现页面元素定位

    之前我们已经安装了Appium Desktop,下面就让我们使用Appium Desktop实现页面元素定位 1.首先我们打开Appium Desktop,进入如下界面,点击Start Server ...

  6. appium自动化测试之元素定位

    方法一 使用SDK中附带的uiautomatorviewer来定位 在SDK安装目录下的tools下有个uiautomatorviewer.bat批处理文件点击运行 运行后(注意appium desk ...

  7. 『与善仁』Appium基础 — 17、元素定位工具(一)

    目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...

  8. 『与善仁』Appium基础 — 18、元素定位工具(二)

    目录 1.Appium Inspector介绍 2.Appium Inspector打开方式 3.Appium Inspector布局介绍 4.Appium Inspector工具的配置 5.Appi ...

  9. 『与善仁』Appium基础 — 19、元素定位工具(三)

    目录 1.Chrome Inspect介绍 2.Chrome Inspect打开方式 3.Chrome Inspect工具的使用 (1)Chrome Inspect工作前提 (2)Chrome Ins ...

随机推荐

  1. Java并发编程:Java Thread方法join的简单总结

    虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间 ...

  2. python-多线程和线程池

    import threading # 点击查看它的用法 传统多线程方案会使用“即时创建, 即时销毁”的策略. from multiprocessing.dummy import Pool # 线程池 ...

  3. SQLServer树查询

    感觉这个CTE递归查询蛮好用的,先举个例子: use City; go create table Tree ( ID int identity(1,1) primary key not null, N ...

  4. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  5. code signing is required for product type 'Application' in SDK 'iOS 8.1' 错误分析以及解决方案

    在真机测试的时候往往会突然出现这样一个错误,code signing is required for product type 'Application' in SDK 'iOS 7.0'  ,就是说 ...

  6. 3.Appnium的安装

    Appnium:移动端的自动测试话工具,类似selenium,可利用其驱动手机端去模拟点击.滑动.输入操作. 下载地址:https://github.com/appium/appium-desktop ...

  7. python中的swapcase

    swapcase()将字符串中的字母小写变大写.大写变小写,举个例子: 1 a = "hELLO wORLD" 2 a1 = a.swapcase() 3 print(a1) 输出 ...

  8. leetcode997

    class Solution: def findJudge(self, N: int, trust: 'List[List[int]]') -> int: if N==1 and len(tru ...

  9. [手把手教你] 用Swoft 搭建微服务(TCP RPC)

    序言 Swoft Framework 基于 Swoole 原生协程的新时代 PHP 全栈式协程框架 Swoft 是什么? Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈 ...

  10. day07-多表查询

    本节重点: 多表连接查询 符合条件连接查询 子查询 准备工作:准备两张表,部门表(department).员工表(employee) create table department( id int, ...