Files
gym-manage/gym-manage-uniapp/e2e/pages/SearchPage.js
T

141 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* SearchPage - 团课搜索页 Page Object
* 对应页面: pages/search/search
*/
class SearchPage {
constructor(miniProgram) {
this.mp = miniProgram;
}
/**
* 等待搜索页加载完成
*/
async waitForLoad() {
const { waitForPage } = require('../helpers/automator');
return waitForPage(this.mp, 'pages/search/search');
}
/**
* 输入搜索关键词
* @param {string} keyword - 搜索关键词
*/
async searchCourses(keyword) {
const page = await this.mp.currentPage();
console.log(`[SearchPage] 搜索课程: "${keyword}"`);
try {
// 查找搜索输入框并输入
const searchInput = await page.$('input');
if (searchInput) {
await searchInput.input(keyword);
}
// 查找搜索按钮并点击
const searchBtn = await page.$('.search-btn');
if (searchBtn) {
await searchBtn.tap();
}
} catch (e) {
console.warn('[SearchPage] 搜索操作异常:', e.message);
}
await this.mp.waitFor(1500);
}
/**
* 选择日期范围
* @param {string} start - 开始日期 YYYY-MM-DD
* @param {string} end - 结束日期 YYYY-MM-DD
*/
async selectDateRange(start, end) {
console.log(`[SearchPage] 选择日期范围: ${start} ~ ${end}`);
// 日期选择通常由 picker 组件实现,通过触发 change 事件模拟
const page = await this.mp.currentPage();
try {
const pickerElements = await page.$$('picker');
if (pickerElements && pickerElements.length >= 2) {
// 假设第一个是开始日期,第二个是结束日期
await pickerElements[0].tap();
await this.mp.waitFor(500);
await pickerElements[1].tap();
await this.mp.waitFor(500);
}
} catch (e) {
console.warn('[SearchPage] 日期选择异常:', e.message);
}
}
/**
* 选择时间段
* @param {string} value - 时间段值(如 'morning', 'afternoon', 'evening'
*/
async selectPeriod(value) {
console.log(`[SearchPage] 选择时间段: ${value}`);
const page = await this.mp.currentPage();
try {
const periodBtn = await page.$(`.period-${value}`);
if (periodBtn) {
await periodBtn.tap();
await this.mp.waitFor(1000);
}
} catch (e) {
console.warn('[SearchPage] 时间段选择异常:', e.message);
}
}
/**
* 获取课程列表
* @returns {Promise<Array>} 课程列表
*/
async getCourseList() {
const page = await this.mp.currentPage();
try {
const courseCards = await page.$$('.course-card');
if (!courseCards || courseCards.length === 0) {
return [];
}
return courseCards;
} catch (e) {
return [];
}
}
/**
* 获取课程列表中的课程数量
* @returns {Promise<number>}
*/
async getCourseCount() {
const list = await this.getCourseList();
return list.length;
}
/**
* 点击指定索引的课程卡片
* @param {number} index - 课程索引(从0开始)
*/
async clickCourse(index = 0) {
const page = await this.mp.currentPage();
console.log(`[SearchPage] 点击第 ${index} 个课程`);
try {
const courseCards = await page.$$('.course-card');
if (courseCards && courseCards[index]) {
await courseCards[index].tap();
await this.mp.waitFor(1500);
}
} catch (e) {
console.warn('[SearchPage] 点击课程异常:', e.message);
}
}
/**
* 通过 TabBar 切换到首页
*/
async navigateToHome() {
const { switchTab } = require('../helpers/automator');
await switchTab(this.mp, 0);
}
}
module.exports = SearchPage;