• Android自动化教程实战:Appium+Python (对应的链接地址:https://www.jianshu.com/p/8b06f76be7e6)


    本文不在叙述Appium环境安装。如有需要请参考:http://www.jianshu.com/p/7a6fa7ab662b

    1. 创建项目目录

    mkdir project{conf,common,logs,doc,tests}
    
    #conf:存放appium-android配置设置,以及App页面元素配置文件;
    #logs:存放日志以及截图;
    #doc:存放文档;
    #common:存放工具类的脚本;
    #tests:存放测试脚本;
    

    整个目录如下:

     
    Paste_Image.png

    2. Appium Android配置文件

    Appium Android Settings 设置如下:


     
    Paste_Image.png

    Python脚本配置如下:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import os
    import sys
    import time
    import re
    from appium import webdriver
    
    sys.path.append("..")
    #用于解决多个手机连接问题
    from common.mobile import get_serialno
    
    #Read mobile deviceId
    device_id = get_serialno()
    
    #Read mobile os Version
    os_version = os.popen('adb -s {0} shell getprop ro.build.version.release'.format(device_id)).read()
        
    def appium_start():
        config = {
            'platformName':'Android',                      #平台
            'platformVersion':os_version,                  #系统版本
            'deviceName':device_id,                        #测试设备ID
            # 'appPackage':'com.jiuai',
            # 'appActivity':'.activity.MainActivity',
            'app':'/Users/xiaohutu/GitHub/Android-Test/com.jiuai.apk',      #apk路径
            #'app':'D:com.jiuai.apk',
            'newCommandTimeout':30,    
            'automationName': 'Appium',
            'unicodeKeyboard':True,                         #编码,可解决中文输入问题
            'resetKeyboard':True}
        return  webdriver.Remote('http://localhost:4723/wd/hub', config)
    

    上述脚本保存为:appium_config.py

    备注:

    from common.mobile import get_serialno
    用于解决多个手机连接问题。具体脚本见:https://github.com/yi-heng/Android-Test/blob/master/Template/common/mobile.py
    

    3. Android元素定位

    uiautomatorviewer是Android SDK自带的工具,在$ANDROID_HOME/tools目录下,可使用此工具查看页面元素。
    使用的测试app为本公司的开发的:旧爱,如下:

     
    Paste_Image.png
    driver.find_element_by_id(resource-id).click()
    

    建议:将所有的页面元素集中到一个文件,提高Appium脚本的复用性、可配置性,如命名为config.ini或el.ini
    见另外教程:http://www.jianshu.com/p/980a82cde7df

    4. 测试脚本编写

    4.1 导入相关库
    import unittest                                   #Python单元测试框架
    from configparser import ConfigParser             #读取配置库
    from selenium import webdriver                    #导入selenium库
    from appium import webdriver                      #导入appium库
    
    4.2 导入appium启动脚本
    from conf.appium_config import appium_start
    
    4.3 使用Unittest编写测试脚本主体
    class ProductInformation(unittest.TestCase):
        """
        TestCase: xxxxx
        Description: xxxxx
        """
        #@classmethod,在此类中只进行一次初始化和清理工作 
        @classmethod
        def setUpClass(self):
            self.driver = appium_config.appium_start()
    
        def test_initial(self):
            pass
    
        @classmethod
        def tearDownClass(self):
            self.driver.quit()
    
    
    4.4 编写测试用例
    def test_initial(self):
       driver.find_element_by_id(resource-id).click()
       driver.find_element_by_id(resource-id).send_keys(u'测试数据')
    
    4.5 组织运行测试用例
    # texture Testcase
    def suite():
        tests = [
            "test_initial",        
        ]
        return unittest.TestSuite(map(ProductInformation,tests))
    
    if __name__ == "__main__":
        unittest.TextTestRunner(verbosity=2).run(suite())
    




  • 相关阅读:
    Flutter
    Flutter
    项目冲刺——第二天
    练习三:用例图
    项目冲刺——第一天
    作业六:团队项目冲刺前期准备
    作业四:软件案例分析
    作业五:需求规格说明书
    【非作业部分】队内暂时安排
    第二次练习——团队展示
  • 原文地址:https://www.cnblogs.com/Snail-offort/p/10818027.html
Copyright © 2020-2023  润新知