阿里云测平台 Appium iOS移动自动化

阿里云MQC官方文档说支持多种依赖库,包括appium+junit、appium+python等,首先尝试了appium+junit不成功,官方解释说java支持的版本不全,让改成appium+python,总之过程很曲折
官方文档:https://help.aliyun.com/product/50644.html?spm=a2c4g.11186623.6.540.3f4a44bfPpPJfu

Appium+Junit

1、本地以appium+junit+maven的框架完成测试脚本,注意类名是Main

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.ios.IOSDriver;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.net.URL;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@FixMethodOrder(MethodSorters.JVM)
public class Main {
    public static AppiumDriver driver;
    public static WebElement waitForElement(final String way, final String str) {
    @Test
    public static void setup() throws Exception {
        DesiredCapabilities capabilities=new DesiredCapabilities();
        driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

2、本地运行通过后,将Main.java压缩成zip格式上传到MQC平台

Appium+python

1、本地编写脚本

# -*- coding: utf-8 -*-
from appium import webdriver
# 引入刚刚创建的同目录下的desired_capabilities.py
from test import desired_capabilities
# 我们使用python的unittest作为单元测试工具
from unittest import TestCase
# 我们使用python的unittest作为单元测试工具
import unittest
# 使用time.sleep(xx)函数进行等待
import time
class MqcTest(TestCase):
    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)
        # 等待app完全加载
        time.sleep(5)
    # 第1个用例,如果检测到弹框,就点掉
    def test_case_login(self):
        a1 = 300.0/ 414.0
        b1 = 430.0/ 736.0
        # 获取当前手机屏幕大小X,Y
        X = self.driver.get_window_size()['width']
        Y = self.driver.get_window_size()['height']
        time.sleep(3)
        self.driver.tap([(a1 * X, b1 * Y)])
        time.sleep(3)
        self.driver.tap([(a1 * X, b1 * Y)])
        time.sleep(3)
        #self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeOther[3]").click()
        #self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeOther[3]").click()
        #self.driver.find_element_by_name("好").click()
        #self.driver.find_element_by_name("允许").click()
        severip=self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeTextField[1]")
        severip.clear()
        severip.click()
        severip.send_keys("your serverip")
        self.driver.find_element_by_name("确定").click()
        time.sleep(3)

        account = self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeTextField[1]")
        account.clear()
        account.click()
        account.send_keys("your account")

        password = self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeSecureTextField[1]")
        password.clear()
        account.click()
        password.send_keys("your password")

        self.driver.find_element_by_name("登录").click()
        time.sleep(5)

    def tearDown(self):
        # 测试结束,退出会话
        self.driver.quit()
if __name__ == '__main__':
    try: unittest.main()
    except SystemExit: pass

2、本地运行成功后修改脚本,如下
(1)增加获取测试框架:self.automationName = desired_caps.get('automationName')
(2)删除后面的if __name__ == '__main__':
(3)去掉本地包名相关的东西,把from test import desired_capabilities修改为import desired_capabilities

# -*- coding: utf-8 -*-
from appium import webdriver
# 引入刚刚创建的同目录下的desired_capabilities.py
import desired_capabilities
# 我们使用python的unittest作为单元测试工具
from unittest import TestCase
# 我们使用python的unittest作为单元测试工具
import unittest
# 使用time.sleep(xx)函数进行等待
import time
class MqcTest(TestCase):
    global automationName
    def setUp(self):
        # 获取我们设定的capabilities,通知Appium Server创建相应的会话。
        desired_caps = desired_capabilities.get_desired_capabilities()
        # 获取server的地址
        uri = desired_capabilities.get_uri()
        #获取测试框架
        self.automationName = desired_caps.get('automationName')
        # 创建会话,得到driver对象,driver对象封装了所有的设备操作。
        self.driver = webdriver.Remote(uri, desired_caps)
        # 等待app完全加载
        time.sleep(5)
    # 第1个用例,如果检测到弹框,就点掉
    def test_case_login(self):
        a1 = 300.0/ 414.0
        b1 = 430.0/ 736.0
        # 获取当前手机屏幕大小X,Y
        X = self.driver.get_window_size()['width']
        Y = self.driver.get_window_size()['height']
        time.sleep(3)
        self.driver.tap([(a1 * X, b1 * Y)])
        time.sleep(3)
        self.driver.tap([(a1 * X, b1 * Y)])
        time.sleep(3)
        #self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeOther[3]").click()
        #self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeOther[3]").click()
        #self.driver.find_element_by_name("好").click()
        #self.driver.find_element_by_name("允许").click()
        severip=self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeTextField[1]")
        severip.clear()
        severip.click()
        severip.send_keys("your serverip")
        self.driver.find_element_by_name("确定").click()
        time.sleep(3)

        account = self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeTextField[1]")
        account.clear()
        account.click()
        account.send_keys("your account")

        password = self.driver.find_element_by_xpath("//XCUIElementTypeOther[1]/XCUIElementTypeSecureTextField[1]")
        password.clear()
        account.click()
        password.send_keys("your password")

        self.driver.find_element_by_name("登录").click()
        time.sleep(5)

    def tearDown(self):
        # 测试结束,退出会话
        self.driver.quit()

3、将main.py文件打包成zip格式上传到云测平台,选择iOS功能测试

阿里云测平台 Appium iOS移动自动化_第1张图片
屏幕快照 2019-01-08 下午1.31.25.png

最后,MQC局限性很多,费用也较高,一次一台机型需要20RMB

你可能感兴趣的:(阿里云测平台 Appium iOS移动自动化)