阿里云测平台|阿里云测平台 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);
}
【阿里云测平台|阿里云测平台 Appium iOS移动自动化】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功能测试文章图片
屏幕快照 2019-01-08 下午1.31.25.png
最后,MQC局限性很多,费用也较高,一次一台机型需要20RMB
推荐阅读
- 赠己诗
- 八、「料理风云」
- 西湖游
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 两短篇
- 9531
- NeuVector 会是下一个爆款云原生安全神器吗()
- S8大连侠盗勇士
- 【亲测好用】高逼格配色网站推荐
- 走向天空,走向云(小说)3