• 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

  • 相关阅读:
    关于Class.getResource和ClassLoader.getResource的路径问题
    JavaScript高级程序设计(读书笔记)(一)
    CSS3常用选择器(二)
    CSS3常用选择器(一)
    JS中的for/in语句和arguments参数
    css绘制特殊图形基础
    css3 3d效果及动画学习
    圣杯布局和双飞翼布局
    css3弹性盒子模型
    css盒子模型
  • 原文地址:https://www.cnblogs.com/surewing/p/9563160.html
Copyright © 2020-2023  润新知