解决puppeteer 在移动端无法使用 click事件

9 min read
  1. 使用page.tap去点击页面上通过touchstart/touchmove事件绑定的元素;
const puppeteer = require('puppeteer')
const devices = require('puppeteer/DeviceDescriptors')
const iphone = devices['iPhone 6 Plus']

async function test () {
  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 250
  })
  const page = await browser.newPage()
  await page.goto('https://ustbhuangyi.github.io/better-scroll/#/examples/picker/en')
  // iphone.viewport.hasTouch = false
  await page.emulate(iphone)
  await page.click('.select:nth-child(1)')
  await page.tap('.picker-panel:nth-child(1) .wheel-item')
  await page.tap('.picker-panel:nth-child(1) .wheel-item:nth-child(3)')
  await new Promise(resolve => setTimeout(resolve, 10000))
  await browser.close()
}

test()
  1. 禁用hasTouch属性
const puppeteer = require('puppeteer')
const devices = require('puppeteer/DeviceDescriptors')
const iphone = devices['iPhone 6 Plus']

async function test () {
  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 250
  })
  const page = await browser.newPage()
  await page.goto('https://ustbhuangyi.github.io/better-scroll/#/examples/picker/en')
  iphone.viewport.hasTouch = false
  await page.emulate(iphone)
  await page.click('.select:nth-child(1)')
  await page.click('.picker-panel:nth-child(1) .wheel-item')
  await page.click('.picker-panel:nth-child(1) .wheel-item:nth-child(3)')
  await new Promise(resolve => setTimeout(resolve, 10000))
  await browser.close()
}

test()