1. 设置Desired Capabilities
开始第一步,创建一个文件,名为:desired_capabilities.py。内容如下:
#!/usr/bin/env python
defget_desired_capabilities():
desired_caps={
'platformName':'Android',
'platformVersion':'7.0',
'deviceName':'V889F',
'appPackage':'com.alibaba.mts.mtsdemoapp',
'appWaitPackage':'com.alibaba.mts.mtsdemoapp',
'app':'D:/home/mdp/result/GroovyTest/case1/task.apk',
'newCommandTimeout':30,
'automationName':'Appium'
}
returndesired_caps
defget_uri():
return"http://localhost:50000/wd/hub"
里面包含两个函数:get_desired_capabilities()和get_uri()。
a. get_uri()
返回Appium Server的地址,比如这里我们在本地启动的Appium Server,并且设置默认监听端口为50000,得到的地址是http://localhost:50000/wd/hub
b. get_desired_capabilities()
获取本次会话的参数。这里主要设置了8个参数。用户可以根据自己的需求进行调整。
platformName,我们测试的目标机器。
platformVersion,测试目标设备的系统版本。
deviceName,测试机器的名称(设备名称即可)。
appPackage,被测应用的包名(只有Android测试才用)。
appWaitPackage,测试时会等待(只有Android测试才用)。
app,被测应用文件的所在位置
newCommandTimeout,两条指令的最长时间间隔。如果超过这个间隔,Appium Server将会终止本次会话。
automationName,本次会话所使用的自动化引擎。Android 4.2以下系统请使用Selendroid;IOS、Android 4.2以上(含)请使用Appium。
2. 编写测试用例
MQC平台会直接执行用户上传的main.py,所以要创建这个入口脚本:main.py。我们以一个登录的脚本main.py作为例子进行说明,代码如下:
# -*- coding: utf-8 -*-
fromappiumimportwebdriver
# 引入刚刚创建的同目录下的desired_capabilities.py
importdesired_capabilities
# 我们使用python的unittest作为单元测试工具
fromunittestimportTestCase
# 我们使用python的unittest作为单元测试工具
importunittest
# 使用time.sleep(xx)函数进行等待
importtime
classMqcTest(TestCase):
globalautomationName
defsetUp(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)
deftest_searchbox(self):
# 找到包含”Tab4”字符串的控件。
ifself.automationName=='Appium':
tab4=self.driver.find_element_by_name("Tab4")
else:
tab4=self.driver.find_element_by_link_text("Tab4")
# 点击.
tab4.click()
# 等待2秒钟
time.sleep(2)
# 通过控件类名找到用户名和密码输入框。
editTexts=self.driver.find_elements_by_class_name("android.widget.EditText")
# 第一个框为用户名输入框,输入用户名;第二个框为密码框,输入密码
editTexts[0].send_keys("admin")
editTexts[1].send_keys("admin")
# 隐藏出现的软键盘
self.driver.hide_keyboard()
# 找到包含“登录”的按钮并点击
ifself.automationName=='Appium':
self.driver.find_element_by_name("登陆").click()
else:
self.driver.find_element_by_link_text("登陆").click()
# 等待3秒钟,登录需要与服务器通讯。
time.sleep(3)
deftearDown(self):
# 测试结束,退出会话。
self.driver.quit()
if__name__=='__main__':
unittest.main()如何编写移动测试脚本:
MQC移动测试平台支持Appium测试框架,相关技术文档参考Appium文档
3. 启动Appium Server
在本地的命令行中执行命令:
appium –p 50000
启动参数释义:
“-p”: 指定appium server监听的端口号。
“-a”: 指定appium server的ip地址。
“-selendroid-port”: selendroid模式下,adb forward的端口。
“-U”: 当挂载多个设备时,可以通过此参数指定某个设备的串号,这样Appium server就可以知道是要在这个设备上进行测试。
“--full-reset”: 如果加上此参数,设备每个case完成时都会对设备进行完全的清理。
4. 执行测试用例
在命令行中执行命令:
python main.py
其中main就是我们刚刚创建的测试用例:main.py
5. 提交到MQC云平台
本地测试通过之后,将所有测试文件打包成zip文件(main.py文件需要在根目录下),然后在”Android功能测试”里,提交被测应用和打包后的脚本ZIP包。
更多问题,请到我们的钉钉交流群(群号:11762195 )中反馈。其它技术支持方式,详见:地址