系列介绍
下载项目 (IDEA IJ)
- 点击 File->Project from version control->git
- 在 URL 处填写本项目 git 地址,在 Directory 处填写项目保存路径
- 选择好后点击 Clone 即可
测试
- 找到 src.main.java.com.main.Runner 类,右键点击,运行 Run Runner.main()
- 检查是否正常运行,是否显示 UI 主界面
- 如果显示 XXX 包不存在或找不到,则右键点击项目名称,打开 Open Module Settings,选择 Libraries,将 mix 和 QAUiFramework 删除,然后分别添加项目目录下的 lib/mix 和 lib/QAUiFramework.jar 到 Libraries 中,重修添加后再次运行 Runner 类,检查是否显示主界面
新建场景类
- 在 src.main.java.com 文件夹下新建一个 package,如 test
- 在 test 中新建一个类 Demo,新建一个接口类 Demo 常量 (非必需)
- 让 Demo 类继承抽象类 BaseAndroidScene/BaseIOSScene(后面以 Android 举例,iOS 情况相同),和继承接口 implements Demo 常量 (用于控件 id 与名称分离,扩展国际化方案等)
- 然后导入 BaseAndroidScene 的需要重写的方法
package com.test;
import com.task.BaseAndroidScene;
public class Demo extends BaseAndroidScene implements Demo常量{
@Override
public void setup() {//该场景所有用例运行前运行,只运行一次
}
@Override
public void teardown() {//该场景所有用例运行完后运行,只运行一次
}
@Override
public void beforeTest(boolean lastcaseresult) {//每条用例运行前都会运行
}
@Override
public void afterTest(boolean thiscaseresult) {//每条用例运行后都会运行
}
}
添加场景类
- 打开项目 Data/androidconfig.xml 文件,找到标签
- 向标签中插入场景信息
#Android设置
<item>
#场景包名.类名***(带*号为必填项)
<name>com.test.Demo</name>
#自动设置设备系统:wifi开,自动时间时区,自动亮度开,屏幕休眠5分钟,输入法切换为非appium输入法
<setdevice>true</setdevice>
#描述
<desc>测试</desc>
#使用截图方式 appium/adb/ddmlib
<screenshot>adb</screenshot>
#是否捕获系统Crash
<syscrash>false</syscrash>
#是否捕获应用Crash
<appcrash>false</appcrash>
#自定义日志捕获,以分号间隔
<userlogcatch>Crash=Fatal exception start;</userlogcatch>
#是否强制重新初始化driver
<initdriver>false</initdriver>
#参数设置
<params>a=1,b=2</params>
#appium启动初始配置
<capability>#http://appium.io/docs/en/writing-running-appium/caps/index.html
<udid></udid>
<deviceName></deviceName>
<platformVersion></platformVersion>
<automationName>uiautomator2</automationName>
<platformName>Android</platformName>
#app路径
<app></app>
#不需要重置应用
<noReset>false</noReset>
#是否自动启动,非标准属性
<autoLaunch>true</autoLaunch>
#包名***
<appPackage>xxx.xxx.xxx</appPackage>
#启动Acitivity名***
<appActivity>xxx.xxx.xxx.xxx.xxx.xxx</appActivity>
#每次启动时覆盖session,否则第二次后运行会报错不能新建session<sessionOverride>true</sessionOverride>
#设置默认键盘为appium的键盘
<unicodeKeyboard>true</unicodeKeyboard>
#退出后还原键盘
<resetKeyboard>true</resetKeyboard>
#安装时不对apk进行重签名,设置很有必要,否则有的apk在重签名之后无法正常使用
<noSign>true</noSign>
</capability>
</item>
#iOS设置
<item>
#场景包名.类名***(带*号为必填项)
<name>com.test.Demo2</name>
#描述
<desc>测试</desc>
#备用应用ID
<appid>xxx.xxxx.xxxx.xx;test;</appid>
#使用截图方式 appium/idevicescreenshot
<screenshot>idevicescreenshot</screenshot>
#是否捕获系统Crash
<syscrash>false</syscrash>
#是否捕获应用Crash
<appcrash>false</appcrash>
#app日志TAG***
<idevicesyslogtag>xxxx</idevicesyslogtag>
#是否强制重新初始化driver
<initdriver>true</initdriver>
#参数设置
<params>a=1;b=2</params>
#appium启动初始配置
<capability>
<deviceName>iphone 6</deviceName>
<platformVersion>8.4</platformVersion>
<udid>af4ff49d34f64251a8d00f3f4826740c3ef28b2f</udid>
<automationName>XCUITest</automationName>
<platformName>iOS</platformName>
#IPA绝对路径
<app></app>
#不需要重置应用
<noReset>flase</noReset>
#是否自动启动#
<autoLaunch>true</autoLaunch>
#bundleId***
<bundleId>xxx.xxx.xxx</bundleId>
#wdaLocalPort端口设置
<wdaLocalPort>8100</wdaLocalPort>
#/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
#每次启动时覆盖session,否则第二次后运行会报错不能新建session <sessionOverride>true</sessionOverride>
#TEAM ID和账号名 <xcodeOrgId>BBK276KSZR</xcodeOrgId> <xcodeSigningId>qq297000498@sina.cn</xcodeSigningId>
</capability>
</item>
- 带 *** 的标签为必填项,其余为非必填项,不填则会使用默认值,默认值即为上面所展示的值
- 常见配置如下
<item>
<!-- 场景包名.类名 -->
<name>com.test.Demo</name>
<desc>基本功能测试</desc>
<!-- appium启动初始配置 -->
<capability>
<appPackage>vStudio.Android.test</appPackage>
<appActivity>vStudio.Android.test.activity.testActivity</appActivity>
</capability>
</item>
编写用例
- 按照下方代码样例添加测试用例方法到 Demo 类中,每一条@TestCase为一条测试用例
@TestCase(no = 100, name = "用例名称", desc = "XX检查", runtime=1,retry=0,notefailcase=true)
protected boolean 用例方法名() throws ClassAssertException {
//测试用例
//....
return true;//返回false或者抛出异常则判断该用例执行结果为失败
}
- no: 执行顺序,0 为不执行,负数为默认不选中;默认 0
- name: 用例名称,如果不填则以方法名称代替;默认""
- desc: 用例描述;默认""
- retry: 失败后重试次数;默认 0
- runtime: 用例运行次数;默认 1
- notefailcase: 失败后是否写入 note.xml 用于重跑;默认 true
编写常量类 (推荐,但非必需)
建议以此种方式编写用例,日志中将会显示中文控件名,便于 DEBUG
- 可以按照以下样例添加控件常量
package com.test;
public interface Demo常量 {
String 首页="xxxx";
String 首页_资料="xxxxx";
String 首页_资料_用户名="xxxx";
}
- 在 Demo 类中调用
...
OP.findElement(首页).click();
OP.findElement(首页_资料).click();
OP.findElement(首页_资料_用户名).click();
...
运行用例
- 配置好 appium 服务器环境并打开
- 运行 com.main.Runner 打开主界面,创建场景,添加任务,点击开始运行 ### iOS WebDriver 配置
- iOS 运行前应该使用 XCODE 打开/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj, 登录 Apple 开发者账号,编辑相关项
- WebDriverAgentLib 页面
- 在 Identity 菜单下 Bundel Identifier 项,将 com.facebook.wda.lib 修改为 com.xxx.wda.lib
- 在 Signing 菜单下勾选 Automatically manage signing,然后在 Team 处选择开发者账号
- WebDriverAgentRunner 页面
- 在 Signing 菜单下勾选 Automatically manage signing,然后在 Team 处选择开发者账号
- 在标签栏点击 Bulid Settings,在 Packaging 菜单下修改 Product Bundle identifier,将 com.facebook.WebDriverAgentRunner 修改为 com.xxx.WebDriverAgentRunner
- USB 连接设备,XCODE 菜单栏选择 Product 标签
- 将 Scheme 选中项更改为 WebDriverAgentRunner
- 将 Destination 选中项更改为目标设备
- 选择 Test 进行安装测试
- WebDriverAgentLib 页面
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。