增加 后端,后台管理系统,uniapp会员端的自动化测试。
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* 我的课程页 Page Object
|
||||
*/
|
||||
class MyCoursesPage {
|
||||
constructor(miniProgram) {
|
||||
this.mp = miniProgram;
|
||||
}
|
||||
|
||||
async waitForReady() {
|
||||
const page = await this.mp.currentPage();
|
||||
await page.waitFor(2000);
|
||||
console.log('我的课程页加载完成');
|
||||
}
|
||||
|
||||
async getPath() {
|
||||
const page = await this.mp.currentPage();
|
||||
return page.path;
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击取消预约按钮
|
||||
*/
|
||||
async clickCancelBooking(index = 0) {
|
||||
const page = await this.mp.currentPage();
|
||||
const cancelBtns = await page.$$('.cancel-btn');
|
||||
if (cancelBtns.length > index) {
|
||||
await cancelBtns[index].tap();
|
||||
console.log(`取消第${index + 1}个预约`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫码签到:mock wx.scanCode 后点击签到按钮
|
||||
* @param {string} courseName 课程名称(如"流瑜伽")- 用于匹配对应 booking card
|
||||
*/
|
||||
async scanSignIn(courseName) {
|
||||
const page = await this.mp.currentPage();
|
||||
|
||||
// 先通过 page data 确认目标课程存在
|
||||
const pageData = await page.data();
|
||||
const bookings = pageData.bookings || [];
|
||||
const targetBooking = bookings.find(b => b.courseName === courseName);
|
||||
if (!targetBooking) {
|
||||
console.log(`未在数据中找到「${courseName}」的预约记录`);
|
||||
return false;
|
||||
}
|
||||
const targetIndex = bookings.indexOf(targetBooking);
|
||||
console.log(`「${courseName}」在 bookings[${targetIndex}]`);
|
||||
|
||||
// 通过 DOM 元素匹配
|
||||
const cards = await page.$$('.booking-card');
|
||||
console.log(`找到 ${cards.length} 个预约卡片`);
|
||||
|
||||
if (cards.length > targetIndex) {
|
||||
const signBtn = await cards[targetIndex].$('.signin-btn');
|
||||
if (signBtn) {
|
||||
await signBtn.tap();
|
||||
console.log(`点击「${courseName}」扫码签到按钮`);
|
||||
return true;
|
||||
}
|
||||
console.log('未找到 signin-btn,尝试 wxml 匹配');
|
||||
|
||||
// 回退:通过 wxml 匹配
|
||||
for (let i = 0; i < cards.length; i++) {
|
||||
const wxml = await cards[i].wxml();
|
||||
if (wxml.includes(courseName)) {
|
||||
const btn = await cards[i].$('.signin-btn');
|
||||
if (btn) {
|
||||
await btn.tap();
|
||||
console.log('点击扫码签到按钮');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(`未找到「${courseName}」的签到按钮`);
|
||||
return false;
|
||||
}
|
||||
|
||||
async containsText(text) {
|
||||
const page = await this.mp.currentPage();
|
||||
const wxml = await page.wxml();
|
||||
return wxml.includes(text);
|
||||
}
|
||||
|
||||
async getPageData() {
|
||||
const page = await this.mp.currentPage();
|
||||
return await page.data();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { MyCoursesPage };
|
||||
Reference in New Issue
Block a user