Javascript 木偶演员元素点击坐标薄片

Javascript 木偶演员元素点击坐标薄片,javascript,puppeteer,Javascript,Puppeteer,这简直快把我逼疯了。下面是一个规范的摘录 await page.goto('localhost:5000/settings?disable-sw-cache', { waitUntil: 'networkidle2' }); // doesn't seem to help w/ stopping flakiness await page.waitFor(2000); page.click("[data-puppeteer='reload-configuration-link']");

这简直快把我逼疯了。下面是一个规范的摘录

await page.goto('localhost:5000/settings?disable-sw-cache', {
  waitUntil: 'networkidle2'
});

// doesn't seem to help w/ stopping flakiness
await page.waitFor(2000); 

page.click("[data-puppeteer='reload-configuration-link']");
await page.waitForSelector('.mdc-snackbar.mdc-snackbar--active');

const message = await page.evaluate(
  selector => document.querySelector(selector).textContent,
  '.mdc-snackbar.mdc-snackbar--active'
);

expect(message).to.contain('Successfully reloaded device configuration');
此规格通过的次数约为6次中的4次。在失败的两次中,对
页面的调用。单击是单击错误的元素。我在点击事件中输出坐标,它们位于
30,80
,这完全是错误的

当我记录应该单击的元素的坐标时

await page.waitFor(2000); 

// log the current location of the element that is about to be clicked!
const coordinates = await page.evaluate(selector => {
  const element = document.querySelector(selector);
  const { x, y } = element.getBoundingClientRect();
  return [x, y];
}, "[data-puppeteer='reload-configuration-link']");

console.log(coordinates)

page.click("[data-puppeteer='reload-configuration-link']");
我得到了正确的
64194
,但在下一行,
页面中。出于某种原因,有时单击
30,80

知道为什么这些坐标6次中有2次是错的吗



因此,我运行了我的规范w/
env DEBUG=“puppeter:mouse,puppeter:keyboard”
来显示单击调试,当规范单击错误的元素时,调试器输出正确的坐标!我疯了

啊!从视口中删除
isMobile
config道具可修复此问题

page.setViewport({
  width: 411,
  height: 731,
  deviceScaleFactor: 2.6,
  isMobile: true, // <---------- REMOVE!
  hasTouch: true,
  isLandscape: false
});
page.setViewport({
宽度:411,
身高:731,
设备比例系数:2.6,
伊斯莫比尔:没错//