这是一款基于selemium的移动端测试框架,支持原生,混合,移动web测试等,同时可以多种语言开发,如Python, Java, C#等,拥有可视化平台,操作便捷
1.安装brew
在终端命令行输入如下,安装完成后,brew -v 进行版本查看是否成功
curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
2.安装node.js
在终端命令行输入如下,安装完成后,node -v 进行版本查看是否成功
brew install node
3.安装AndroidStudio,JDK,Xcode,PyCharm
不做详细说明,官网下载安装即可
4.安装Appium可视化服务端
下载链接
5.配置环境变量
查看Java路径
sudo chmod -R 777 /etc/profile
/usr/libexec/java_home -V
在appium服务端设置
6.安装Appium-doctor
npm config set -g registry https://registry.npm.taobao.org
npm install -g appium-doctor
brew install carthage
appium-doctor
查看安装是否齐全,黄色x可以忽略,不影响使用
1.启动Appium后点击start Server,开启服务,可以看到服务地址为127.0.0.1:4723
2.点击搜索按钮进行服务测试配置
该功能只是用于查看配置是否正确,能否启动手机测试
此时手机先安装测试apk,并获取apk包名和启动第一页,可以直接联系开发索要
Desird Capablilities是配置过滤项
(1)deviceName 手机连接端口号,可通过adb devices获得
(2)platformVersion 手机Android版本号
(3)appPackage,appActivity 测试app包名和启动首页,可直接找开发索要
{
"deviceName": "W8RDU15713002925",
"platformVersion": "6.0",
"platformName": "Android",
"autoAcceptAlerts": "true",
"noReset": "true",
"appPackage": "com.test.aaa",
"appActivity": "com.test.aaa.ui.main.WelcomeActivity",
"automationName": "Appium"
}
配置完成后点击start Session会在手机安装Appium Setting app,然后启动测试的app,如果能正常启动说明配置正确
打开PyCharm新建一个项目,创建两个python文件,desired_capabilities.py和main.py
desired_capabilities.py 用于设置启动参数
def get_desired_capabilities():
desired_caps = {
'platformName': 'Android',
'platformVersion': '6.0',
'deviceName': 'W8RDU15713002925',
'appPackage': 'com.test.aaa',
'appActivity': 'com.test.aaa.ui.main.WelcomeActivity',
'newCommandTimeout': 40,
'automationName': 'Appium',
'autoAcceptAlerts':'true',
'noReset':'true'
}
return desired_caps
def get_uri():
return "http://127.0.0.1:4723/wd/hub"
main.py逻辑代码,实现录入用户名,密码,按钮登录功能
# -*- 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)
def test_searchbox(self):
time.sleep(10)
el1 = self.driver.find_element_by_id("com.test.aaa:id/iv_person")
el1.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("888888")
print(editTexts[1].text)
# 隐藏出现的软键盘
self.driver.hide_keyboard()
# 找到包含“登录”的按钮并点击
if self.automationName == 'Appium':
self.driver.find_element_by_xpath(".//*[@text='登录']").click()
# 等待3秒钟,登录需要与服务器通讯。
time.sleep(3)
def tearDown(self):
# 测试结束,退出会话。
self.driver.quit()
if __name__ == '__main__':
unittest.main()
新建后appium会报红,导入appium包,在编译器Terminal中输入进行安装,成功后可直接运行main.py开启正式测试
pip install Appium-Python-Client