Android自动化教程实战:Appium+Python

作者: 一直小鱼 | 来源:发表于2017-04-17 16:00 被阅读7904次

    本文不在叙述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())
    
    

    相关文章

      网友评论

      • 喔在路上:请问下,创建项目目录是怎样创建的呢,mkdir project{conf,common,logs,doc,tests}创建出来不是您提到的效果哎:cry: 求教
        喔在路上:@一直小鱼 多谢指教,:+1: 那除此之外的文件都是怎样生成的呢?
        一直小鱼:@喔在路上 多谢指出错误。linux mkdir建立多级目录,需要加参数。正确如下:mkdir -p project/{test,conf}
      • 程子勋:最近也在对自动化测试这块进行研究学习,对混效果的app能实现自动化测试吗?

      本文标题:Android自动化教程实战:Appium+Python

      本文链接:https://www.haomeiwen.com/subject/eeetzttx.html