zoukankan      html  css  js  c++  java
  • airtest+pytest实战教程02-APP页面元素获取

    前言

    前面已经弄好了测试环境配置和基础的airtestIDE使用。入门使用应该不是问题了。

    但是在airtestIDE中编写代码是有局限性的,所以我们使用pycharm编写脚本。

    工具选择

    工欲善其事必先利其器。工具确定

    • IDE
      • pycharm2020.1社区版 注:社区版就够用了
    • python
      • 3.7.7 注::3.8+的版本可能会有一些第三方库不兼容

    好了工具选好了,我们开始吧!

    安装airtest库

    打开pycharm,选择新建项目。

    如图: 新项目名称为steward

    image-20200617213815579.png

    点击create创建。

    进入pycharm之后项目中会有一个venv的文件夹,这是pycharm为我们创建的虚拟环境。

    现在我们点击下面的Terminal,打开cmd命令行。输入:

    pip install airtest
    

    这个包东西比较多,网速慢的话可能会等许久。 安装完成后我们在安装poco。

    值得注意的是poco在pypi中的名称并不叫poco而是pocoui,至于原因可能是有先来者了

    pip install pocoui
    

    两个都install successful就安装成功了。

    获取应用元素

    我们环境也配置好了,设备中的应用安装了,然后包名获取了,airtest的python库也安装了。

    我们就一起来编写一个登录的操作脚本吧。编写脚本之前先熟悉一下元素获取。

    如同web自动化测试一样,app的页面元素获取也是一个比较重要的组成部分。

    我们使用什么获取元素呢,当然是使用airtestIDE了。我们不用它编写脚本可以,但是我们不能没有它来获取APP页面的元素信息。

    airtest获取元素

    airtest的运行方式是通过截图并对比预期的图片,对比成功则操作截图的区域。所以没有页面元素树的功能。

    pocoui获取元素

    poco-Android是支持页面元素获取的,它和uiautomator2有着基本相同的语法和元素定位方式。

    开启元素识别

    • 首先我们需要开启poco Android页面元素识别

    QQ截图20200620165520.png

    我们在airtestIDE中展开poco辅助窗的列表。然后我们选择Android,箭头1所指部分。

    选中之后,等2秒左右,右侧的设备显示窗会刷新一下。

    元素检查

    然后看第二个箭头所指的按钮。鼠标放上去之后显示poco inspecter,poco检查,这个按钮就和chrome浏览器开发者工具中的检查按钮是一样的。

    然后我们点击这个按钮一下,去右侧设备屏幕显示框检查一下元素。

    QQ截图20200620165941.png

    可以看到当我们把鼠标悬浮在密码登录控件上时,中间的Log查看窗,显示出了这个控件的详细信息。

    而对于密码登录这个控件元素来说:name属性正是我们所需要的。箭头所指部分。

    当然了还有textresourceIdpos等等属性我们也可以用。

    登录智学网app

    我们现在来编写一个完整的登录操作吧,通过airtestIDE获取app页面元素,然后在pycharm中编写脚本代码。

    然后先简单的用unittest封装一下。

    • setupclass

      • 应用程序被启动
      • 等待5秒用于app加载时间
    • test001

      • 通过poco的click方法我们实现了点击操作
      • 通过poco的set_text方法我们输入账号和密码,在输入前如果存在密码就先清空,这样我们就能看到输入的过程了
      • 登录成功后等待8秒用于留时间给你观察
    • test_002

      • 退出登录成功的账号
      • 退出后等待5秒用于留时间给你观察
    • teardownclass

      • 最后停止应用

    这样一个智学网app登录就简单的写好了,我们运行一下。

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import unittest
    from airtest.core.api import *
    from airtest.core.android import Android
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    
    auto_setup(__file__)
    
    
    class TestZhiXue(unittest.TestCase):
        @classmethod
        def setUpClass(cls) -> None:
            start_app('com.iflytek.elpmobile.smartlearning')
            sleep(5)
    
        @classmethod
        def tearDownClass(cls) -> None:
            stop_app('com.iflytek.elpmobile.smartlearning')
    
        def test_001(self):
            """进行登录操作"""
            poco(name="com.iflytek.elpmobile.smartlearning:id/account_login_tv").click()
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/login_name").set_text("")
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/login_name").set_text('18291900215')
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/login_pwd").set_text("")
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/login_pwd").set_text('test001')
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/login_btn").click()
            sleep(8)
    
        def test_002(self):
            """进行登出操作"""
            poco(text="我的").click()
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/head_collect").click()
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/btn_user_exit").click()
            sleep()
            poco(name="com.iflytek.elpmobile.smartlearning:id/dialog_right").click()
            sleep(5)
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

    运行一下:

    ----------------------------------------------------------------------
    Ran 2 tests in 39.899s
    
    OK
    

    登录和退出登录都没有问题。

    后记

    通过这篇文章你了解到了,在airtestIDE中获取poco Android类型的页面元素。

    并简单的编写了一个脚本。

  • 相关阅读:
    JAVA第六次作业
    20194672自动生成四则运算题第一版报告
    20194672自动生成四则运算第一版报告
    第四次博客作业--结对项目
    第9次作业--接口及接口回调
    第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    第7次作业——访问权限、对象使用
    第6次作业--static关键字、对象
    Java输出矩形的面积和周长
  • 原文地址:https://www.cnblogs.com/wxhou/p/13154987.html
Copyright © 2011-2022 走看看