Day15 综合实战

适用人群:想看完一整天的内容如何串联使用

目标:综合运用前 14 天所学的核心技能

一、实战场景

综合实战模拟了 4 个真实业务场景,覆盖日常自动化测试中最常用的技能:

---

---

---

登录表单

input、check、click、getText、assert

7 步

注册表单

input、selectByText、radio check、click、getText、assert

8 步

交互元素

rangeValue、hover、click、getText、assert

7 步

工具断言

getText、getAttribute、JSON提取、随机生成、存储变量

8 步

二、登录表单(loginTest)

1. 打开测试页

- 动作方法:navigateTo

- 说明:打开 day15_test.html 综合实战页面

2. 输入用户名

- 定位方法:getByPlaceholder(请输入用户名)

- 动作方法:input

- 动作值:admin

- 说明:通过 placeholder 定位用户名输入框并输入内容

3. 输入密码

- 定位方法:getByPlaceholder(密码)

- 动作方法:input

- 动作值:pass123

- 说明:输入密码,模拟登录表单填写

4. 勾选记住我

- 定位方法:getBylocator(#remember)

- 动作方法:check

- 说明:通过 CSS 选择器定位复选框并勾选

5. 点击登录

- 定位方法:getBylocator(#loginBtn)

- 动作方法:click

- 说明:点击登录按钮,触发 onclick 更新结果文本

6. 获取结果并存储

- 定位方法:getBylocator(#loginResult)

- 动作方法:getText

- 特殊方法:存储变量 → loginResult

- 说明:获取登录结果文本并存入变量,供后续断言使用

7. 断言含登录成功

- 定位方法:assert

- 定位值:@loginResult||登录成功

- 说明:断言存储的变量值包含"登录成功"

三、注册表单(registerTest)

8. 打开测试页

- 动作方法:navigateTo

- 说明:重新打开页面

9. 输入姓名

- 定位方法:getByPlaceholder(请输入姓名)

- 动作方法:input

- 动作值:张三

10. 输入邮箱

- 定位方法:getByPlaceholder(email@example.com)

- 动作方法:input

- 动作值:zhang@test.com

11. 选择国家

- 定位方法:getBylocator(#country)

- 动作方法:selectByText

- 动作值:#country||中国

- 说明:定位下拉框,按可见文本选择"中国"。注意参数格式:选择器||文本

12. 选中男性

- 定位方法:getBylocator(#genderM)

- 动作方法:check

- 说明:通过 CSS ID 选中 radio 选项

13. 点击注册

- 定位方法:getBylocator(#registerBtn)

- 动作方法:click

14. 获取注册结果

- 定位方法:getBylocator(#result)

- 动作方法:getText

- 特殊方法:存储变量 → regResult

15. 断言含注册成功

- 定位方法:assert

- 定位值:@regResult||注册成功

四、交互元素(interactTest)

16. 打开测试页

17. 滑块设值80

- 定位方法:getBylocator(#slider)

- 动作方法:rangeValue

- 动作值:80

- 说明:通过 boundingBox 计算坐标,鼠标点击滑块对应位置

18. 悬停按钮

- 定位方法:getBylocator(#hoverBtn)

- 动作方法:hover

- 说明:模拟鼠标悬停,触发 onmouseover 事件

19. 显示隐藏区域

- 定位方法:getBylocator(#showBtn)

- 动作方法:click

- 说明:点击按钮显示原本隐藏的 div

20. 设置动态文本

- 定位方法:getBylocator(#setTextBtn)

- 动作方法:click

- 说明:点击按钮通过 JS 设置文本内容

21. 验证动态文本

- 定位方法:getBylocator(#dynamicText)

- 动作方法:getText

- 特殊方法:存储变量 → dt

22. 断言动态文本

- 定位方法:assert

- 定位值:@dt||动态设置的文本

五、工具与断言(toolTest)

23. 打开测试页

24. 获取 h1 文本

- 定位方法:getBylocator(h1)

- 动作方法:getText

- 特殊方法:存储变量 → h1text

- 说明:获取页面标题文本,验证页面加载正确

25. 断言标题含 Day15

- 定位方法:assert

- 定位值:@h1text||Day15

26. 获取 placeholder 值

- 定位方法:getByPlaceholder(请输入用户名)

- 动作方法:getAttribute

- 动作值:placeholder

- 特殊方法:存储变量 → ph

- 说明:获取输入框的 placeholder 属性值,验证属性读取

27. 断言 placeholder

- 定位方法:assert

- 定位值:@ph||请输入

28. JSON 提取 code

- 动作方法:getValueByJsonPath

- 动作值:{"code":200}||$.code

- 特殊方法:存储变量 → code

- 说明:从 JSON 对象中按 JSONPath 提取值,验证 JSON 解析

29. 断言 code=200

- 定位方法:assert

- 定位值:@code||200

30. 随机生成 6 位

- 动作方法:randomUpperNum

- 动作值:6

- 特殊方法:存储变量 → rand

- 说明:生成随机字母数字混合字符串,验证工具方法

六、实用技巧总结

定位技巧

---

---

---

唯一 ID

getBylocator(#id)

最快、最稳定

输入框

getByPlaceholder

语义化、不易变

表单标签

getByLabel

HTML 关联,无歧义

按钮/链接

getByRoleByButton / getByText

语义化定位

下拉框

getBylocator(#id) + selectByText/Value

精确控制选项

复选框/单选框

getBylocator(#id) + check/uncheck

直接操作状态

变量存储与复用

#存储步骤
step("获取结果", actM="getText", specM="存储变量", specV="myVar")
#
使用步骤(@变量名引用)
step("断言结果", locM="assert", locV="@myVar||期望值")

常见断言类型

---

---

---

assert

包含断言(contains)

@var

期望文本

assertEquals

等于断言(equals)

@var

完全匹配

assertNot

不包含断言(!contains)

@var

不期望文本

assertEqualsNot

不等于断言(!equals)

@var

不匹配文本

参数分隔约定

所有多参定位/动作值统一使用 `||` 分割:

- `selectByText`:`#country||中国`(选择器 + 文本)

- `getByPlaceholderNth`:`请输入用户名||0`(文本 + 索引)

- `dragTo`:`getBylocator||#drop-target`(定位方式 + 定位值)

注意事项

1. `evaluate()` 返回 void,返回值无法存储。要获取 JS 结果请改用 `getText` 等有返回值的方法

2. 断言使用 `@变量名` 引用已存储的值,`paramDeal` 会自动解析

3. `failureIsGo="是"` 控制步骤失败后的行为:是 = 继续执行,否 = 跳出循环

4. 超时时间统一设为 3000ms,避免单个步骤等待 30 秒

七、运行结果总结

---

---

---

登录表单

7 步

✅ 全部通过

注册表单

8 步

✅ 全部通过

交互元素

7 步

✅ 全部通过

工具断言

8 步

✅ 全部通过

**总计**

**30 步**

**✅ 0 失败**

全部 30 步通过,覆盖了表单操作、交互元素、变量断言、工具方法等核心实战技能。