zoukankan      html  css  js  c++  java
  • 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())
    




  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/Snail-offort/p/10818027.html
Copyright © 2011-2022 走看看