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

102 lines
2.4 KiB
JavaScript

/**
* HomePage - 首页 Page Object
* 对应页面: pages/index/index
*/
class HomePage {
constructor(miniProgram) {
this.mp = miniProgram;
}
/**
* 等待首页加载完成
*/
async waitForLoad() {
const { waitForPage } = require('../helpers/automator');
return waitForPage(this.mp, 'pages/index/index');
}
/**
* 获取首页关键元素
* @returns {Promise<Object>} 包含轮播图、导航等元素信息
*/
async getElements() {
const page = await this.mp.currentPage();
const elements = {};
try {
// 尝试获取轮播图
const swiperItems = await page.$$('swiper-item');
elements.bannerCount = swiperItems ? swiperItems.length : 0;
} catch (e) {
elements.bannerCount = 0;
}
try {
// 获取课程列表卡片
const courseCards = await page.$$('.course-card');
elements.courseCardCount = courseCards ? courseCards.length : 0;
} catch (e) {
elements.courseCardCount = 0;
}
try {
// 获取导航按钮
const navButtons = await page.$$('.nav-item');
elements.navButtonCount = navButtons ? navButtons.length : 0;
} catch (e) {
elements.navButtonCount = 0;
}
return elements;
}
/**
* 获取轮播图信息
* @returns {Promise<Array>} 轮播图列表
*/
async getBanners() {
const page = await this.mp.currentPage();
try {
const swiperItems = await page.$$('swiper-item');
if (!swiperItems || swiperItems.length === 0) {
return [];
}
const banners = [];
for (let i = 0; i < swiperItems.length; i++) {
try {
const image = await swiperItems[i].$('image');
if (image) {
const src = await image.attribute('src');
banners.push({ index: i, src });
}
} catch (e) {
banners.push({ index: i, src: null });
}
}
return banners;
} catch (e) {
return [];
}
}
/**
* 通过 TabBar 切换到搜索页
*/
async navigateToSearch() {
const { switchTab } = require('../helpers/automator');
await switchTab(this.mp, 1);
}
/**
* 下拉刷新
*/
async pullDownRefresh() {
const page = await this.mp.currentPage();
// 触发下拉刷新
await this.mp.callWxMethod('startPullDownRefresh', {});
await this.mp.waitFor(2000);
}
}
module.exports = HomePage;