102 lines
2.4 KiB
JavaScript
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;
|