Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)

Mac 下 appium +python 自动化测试系列:

MAC下搭建 appium+ios+python 自动化测试环境(一)

Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)

Mac 下 搭建appium +android+python 自动化测试环境(三)

Mac 下 appium 自动化测试 Android 测试配置和脚本编写(四)

书接上回,环境配置已经耗光了我所有耐性,终于到了收割的时候,开始测试我们第一个测试脚本吧!

一、 sample_code_python 的脚本测试验证

  • 1.开启 appium desktopMac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第1张图片 

2.配置我们要测试的的.app信息

进入的界面如下,当然是没有我哪些输出信息的Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第2张图片

Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第3张图片

  • 3.开启 Inspector来查看元素定位和界面元素查找Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第4张图片 
  • 4.配置我们的脚本来测试

    脚本来自网上下的 sample_code

    git clone https://github.com/appium/sample-code
    
    cd /Users/xxxx/Downloads/sample-code-master/sample-code/apps/TestApp(xxx 是你自己的目录)
    
    xcodebuild -sdk iphonesimulator
    

    如果出现*** BUILD SUCCEEDED ***则表示编译成功(指令是在目录下生成个一个.app 文件,目录大致如下:/Users/XXXX/Downloads/sample-code-master/sample-code/apps/TestApp/build/Release-iphonesimulator/TestApp-iphonesimulator.app )

    完成之后,我们进入到 example 的目录

    Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第5张图片


    image
    选择用 Xcode打开或者下载一个 IDEPyCharm来打开,当然PyCharm强大很多

    image
    其中参数定义如下:

    `app`            :我们需要测试的 app的地址,填我们机子上的绝对地址
    `platformName`   :'iOS'我们测试的平台
    `platformVersion`:'ii.3',这是我们的版本号,手机版本
    `deviceName`     :'iPhone 8 Plus'这是我们需要的测试的机型,模拟器也行,会自己找,如果是真机需要填真机的 `UUID`
    

    接着修改以下部分,因为 demo里面的元素查找不到报错



    image

    接着,我们可以在PyCharm或者终端里面运行 ios_simple.py了,每次脚本运行前确定 appium 已经启动!
    PyCharm方式,第一次右键会有 run ios_simple.py的选项:

    image终端方式如下,进入到你需要运行的脚本目录下,我这里是 python 脚本模式:
  • cd /Users/XXXX/Downloads/sample-code-master/sample-code/examples/python
    python ios_simple.py
    
    Ran 2 tests in 0.058s
    
    FAILED (errors=2)
    xxxxdeiMac:python xxxxx$ python ios_simple.py 
    test_scroll (__main__.SimpleIOSTests) ... ok
    test_ui_computation (__main__.SimpleIOSTests) ... ok
    
    ----------------------------------------------------------------------
    Ran 2 tests in 18.646s
    
    OK
    
    上面就是**sample_code_python** 方式的脚本测试了!接下来,我们书写自己的脚本了!
    
    二、自定义脚本测试用例详解
  • 1.脚本录制

    Inspector 提供脚本录制功能,至于如何操作,请看下面的 gif 把,我简单录制一下:

     


    image

    录制的脚本如下:

  • el1 = driver.find_element_by_accessibility_id("进入主页面")
    el1.click()
    el2 = driver.find_element_by_accessibility_id("登录")
    el2.click()
    el3 = driver.find_element_by_xpath("//XCUIElementTypeApplication[@name=\"UTengineFrameworkTest\"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeTable/XCUIElementTypeCell[1]")
    el3.click()
    el4 = driver.find_element_by_accessibility_id("返回")
    el4.click()
    

    当然,,录制出来的脚本我们可能是无法直接使用的,需要自己修改!另外,里面的 xpath 查找元素并不一定是正确的,需要多次调试!最好的办法就是让开发者每个控件都设置accessibilityIdentifier,例如:

    [self.label setAccessibilityIdentifier:@"呵呵哒"]
    

    这样子找起来就方便准确多了

  • 2.自定义编写脚本,按照可以上传到阿里 MQC 云测试的模式

    开始我们自己编写属于自己的脚本吧!我们会新建两个.py 脚本,放在同一目录下,分别为:desired_capabilities.py 和 main.py
    具体内容如下:
    desired_capabilities.py 里面内容如下:

  • #!/usr/bin/python 
    # -*- coding: UTF-8 -*-
    
    import sys
    
    def get_desired_capabilities():
        desired_caps = {
            #平台名称
            'platformName': 'iOS',
            #平台版本
            'platformVersion': '11.3',
            #设备名称
            'deviceName': 'iPhone 8 Plus',
            #app 的地址
            'app': '/Users/tanzhiwu/Desktop/appium自动化测试/UTengineFrameworkTest.app',
            #bundleid 如果没有填 app 地址,填了这个 id 就会直接运行已安装的 app
            'bundleId': 'com.ut.pc.UTengineFrameworkTest',
            #超时时间
            'newCommandTimeout': 60,
            #自动化测试平台
            'automationName': 'Appium',
            #是否不重新安装启动
            'noReset': True
            #自动处理系统权限弹框
            #`autoAcceptAlerts`:True 低版本有效
        }
        return desired_caps
        
    #获取服务器端口地址
    def get_uri():
        return 'http://localhost:4723/wd/hub'
    
    def flushio():
        sys.stdout.flush()
    

    main.py的内容如下:

    # -*- coding: UTF-8 -*-
    from appium import webdriver
    import desired_capabilities
    import time
    from time import sleep
    import unittest
    
    
    class MyIOSTest(unittest.TestCase):
    
    #setUp 和 tearDown 配对使用,场景是每个测试用例运行完都重启
    
    
        #def setUp(self):
            #获取我们设定的 capabilities,通知 appium Server 创建相应的对话
            #desired_caps = desired_capabilities.get_desired_capabilities()
            #获取 Server 的地址
            #uri          = desired_capabilities.get_uri()
            #创建会话,得到 driver 对象,driver 对象封装了所有的设备操作
            #self.driver = webdriver.Remote(uri,desired_caps)
            #设定等待时间,系统函数,在这个时间内会持续获取,超时会失败
            #self.driver.implicitly_wait(10)
            #处理系统权限弹框(新版本方法)
            #self.driver.switch_to.alter.accept()
    
    
        #def tearDown(self):
            #测试结束,退出会话
            #self.driver.quit()
    
    #setUpClass 和 tearDownClass配套使用,场景是不间断测试,后续测试用例依赖前一个测试用例的环境
        @classmethod
        def setUpClass(self):
            desired_caps = desired_capabilities.get_desired_capabilities()
    
            uri          = desired_capabilities.get_uri()
    
            self.driver = webdriver.Remote(uri,desired_caps)
    
            #self.driver.implicitly_wait(10)
    
        @classmethod
        def tearDownClass(self):
    
            self.driver.quit()
    
        #自定义元素查找方法
        def wait_for_element(self,xpath=None, id=None, name=None, index=None,timeOut= 20):
            starTime = time.time()
            nowTime  = time.time()
            while nowTime -starTime 

    这个时候最好就是上图来演示下我们的自动化测试结果了,有个注意点,右键开始 run 的时候不要放在测试用例体内,不然只会运行当前测试用例:Mac 下 appium 自动化测试iOS 测试配置和脚本编写(二)_第6张图片

    至此,我们iOS 端的测试python 自动化功能测试脚本就完成了。当然我这里只是简单的写两个用例,真的在生产环境中的时候,需要分割成不同的模块去编写测试用例,还有更细致的容错管理等!抛砖引玉一下,希望大家也能分享比较成熟的脚本编写方案,指导一下我们这种希望了解自动化测试的的新人!

你可能感兴趣的:(自动化,自动化测试,测试环境)