zoukankan      html  css  js  c++  java
  • appium自动化测试之UIautomatorviewer元素定位

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

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


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

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

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

    • 启动UIautomatorviewer.bat文件:
      打开对应的安装sdk的目录,找到对应的tools文件(mac电脑的同学:/Users/用户/Library/Android/sdk/tools/bin目录下,我也找了好久),然后打开:uiautomatorviewer.bat文件:image.png-154.6kB
    • 双击:.bat文件
      image.png-24.1kB
    • cmd adb devices
      查看设备是否连接上,然后点击uiautomatorviever界面的第二个控件:
      image.png-42.3kB
    • 可以通过鼠标的移动定位具体的元素:image.png-547.8kB
    • 右下角是一些元素的定位属性:image.png-41.9kB
    • 前面写过的关于:启动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然后会自动的匹配出来
      image.png-181.3kB

    如图所示的多的三种地位方式,第三个是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 查看到的)
    image.png-123.6kB

    通过上述的方法可以查看:apk的包名,和LaunchActivity
    例如:淘宝APP
    image.png-84.2kB

    二、开启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界面
    image.png-109.4kB
    2.这里用个appium默认的服务端地址127.0.0.1端口4723,一般在自己机器上调试,无需修改
    二、访问地址
        1.代码里面的那个地址到底指向的是哪里呢?
    启动appium服务后,在浏览器输入:http://127.0.0.1:4723/wd/hub。出现如下图所示,说明服务启动成功,可以把appium看出是一个服务端。

    image.png-49.2kB
    三、配置测试机
        1.一台工作电脑,一台跑自动化测试的电脑,如何用工作的电脑远程控制自动化测试的那台电脑呢?
        2.测试电脑上的appium服务地址改成本机IP地址如:172.17.1.165(这里要是本机的ip地址!!!!!)

    image.png-119.2kB
    3.启动测试电脑上的appium。
    image.png-106kB
    四、远程操作
        1.在自己工作电脑上打开浏览器输入:172.17.1.165:4723/wd/hub。这一步很重要,一定要看到如下界面,确认远程链接成功。

    image.png-47.5kB

    同时代码里面的IP也要对应的修改一下;
    3.以上环境准备好后,在测试机器上运行脚本,于是测试机器上可以自动运行了;

    输入中文的问题:

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

    我们可以采取:屏蔽软件盘,绕过手机软件盘的方法,解决输入中文的问题;
    通常我们会使用:元素.send_keys(u"hao")
    2.运行脚本:
    首先我们要确认手机的输入法是什么输入法,如果默认是中文的输入法,启动后出现下面的情况,无法输入成功;
    image.png-39.8kB
    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:输入使用真机测试时候,发现测试完毕之后,输入不能用了,这时候怎么办呢?
    答案:
    我们需要进入到设置--输入法设置,把对应的输入法修改过来,就可以了,修改为系统的,或者自己常用的就行了;
    image.png-48.7kB

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/surewing/p/9563160.html
Copyright © 2011-2022 走看看