本文是如何使用Shirates的介绍,一种移动测试自动化工具。
屏幕昵称
在Shirates中,您可以将屏幕昵称定义为JSON文件。屏幕昵称使测试代码可读且富有成效。
屏幕昵称功能
- 标识当前显示的屏幕
- 在屏幕上提供Selector Nicknames
材料
您可以从[https://github.com/wave1008/shirates-samples-nicknames]获得完整的示例项目。
示例1:计算器
- 开始 Android Emulator 。
- 启动计算器 app。
- 启动 Appium Inspector 。
- 捕获计算器 app。
- 在
testConfig/screens/calculator
目录下创建[Calculator Main Screen].json
。
- 使用 Appium Inspector 检查屏幕元素,编辑屏幕昵称文件如下。
[计算器主屏幕] .json
{
"key": "[Calculator Main Screen]",
"identity": "[AC][()]",
"selectors": {
"[formula]": "#formula",
"[result final]": "#result_final",
"[result preview]": "#result_preview",
"[√]": "#op_sqrt",
"[π]": "#const_pi",
"[^]": "#op_pow",
"[!]": "#op_fact",
"[AC]": "#clr",
"[()]": "#parens",
"[%]": "#op_pct",
"[÷]": "#op_div",
"[×]": "#op_mul",
"[-]": "#op_sub",
"[+]": "#op_add",
"[=]": "#eq",
"[⌫]": "#del",
"[0]": "#digit_0",
"[1]": "#digit_1",
"[2]": "#digit_2",
"[3]": "#digit_3",
"[4]": "#digit_4",
"[5]": "#digit_5",
"[6]": "#digit_6",
"[7]": "#digit_7",
"[8]": "#digit_8",
"[9]": "#digit_9",
"[.]": "#dec_point"
}
}
您可以在运行测试中标识带有Identity "[AC][()]"
的Identity "[AC][()]"
的屏幕。
例如,您可以断言当前屏幕是[Calculator Main Screen]
。
it.screenIs("[Calculator Main Screen]")
计算
以下是无需或使用屏幕昵称文件的计算器测试代码。如果没有屏幕昵称文件,则必须使用低级标识符,例如Resource-ID。另一方面,如果使用屏幕昵称文件,您可以使用摘要屏幕昵称/选择器昵称。
package calculator
import org.junit.jupiter.api.Test
import shirates.core.driver.commandextension.*
import shirates.core.testcode.UITest
class CalculatorTest : UITest() {
@Test
@Order(10)
fun withoutNickname() {
scenario {
case(1) {
condition {
it.tapAppIcon("Calculator")
}.expectation {
it.exist("#clr")
it.exist("#parens")
}
}
case(2) {
action {
it.tap("#clr")
}.expectation {
it.select("#formula")
.textIsEmpty()
it.select("#result_preview")
.textIsEmpty()
}
}
case(3) {
action {
it.tap("#digit_1")
}.expectation {
it.select("#formula")
.textIs("1")
it.select("#result_preview")
.textIsEmpty()
}
}
case(4) {
action {
it.tap("#op_add")
}.expectation {
it.select("#formula")
.textIs("1+")
it.select("#result_preview")
.textIsEmpty()
}
}
case(5) {
action {
it.tap("#digit_2")
}.expectation {
it.select("#formula")
.textIs("1+2")
it.select("#result_preview")
.textIs("3")
}
}
case(6) {
action {
it.tap("#eq")
}.expectation {
it.select("#result_final")
.textIs("3")
}
}
}
}
@Test
@Order(20)
fun withNickname() {
scenario {
case(1) {
condition {
it.tapAppIcon("Calculator")
}.expectation {
it.screenIs("[Calculator Main Screen]")
}
}
case(2) {
action {
it.tap("[AC]")
}.expectation {
it.select("[formula]")
.textIsEmpty()
it.select("[result preview]")
.textIsEmpty()
}
}
case(3) {
action {
it.tap("[1]")
}.expectation {
it.select("[formula]")
.textIs("1")
it.select("[result preview]")
.textIsEmpty()
}
}
case(4) {
action {
it.tap("[+]")
}.expectation {
it.select("[formula]")
.textIs("1+")
it.select("[result preview]")
.textIsEmpty()
}
}
case(5) {
action {
it.tap("[2]")
}.expectation {
it.select("[formula]")
.textIs("1+2")
it.select("[result preview]")
.textIs("3")
}
}
case(6) {
action {
it.tap("[=]")
}.expectation {
it.select("[result final]")
.textIs("3")
}
}
}
}
}
测试结果
在没有屏幕昵称和的情况下,与屏幕昵称一起查看和比较。您可以发现带有屏幕昵称更容易理解。
_Report(simple).html
CalculatorTest@a.xlsx
结论
在Shirates中,您可以将屏幕昵称定义为JSON文件。屏幕昵称使测试代码可读且富有成效。