/** * 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} 包含轮播图、导航等元素信息 */ 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} 轮播图列表 */ 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;