Прокрутка с помощью Puppeteer / Playwright не работает для приложения SAPUI5 - PullRequest
3 голосов
/ 19 июня 2020

В настоящее время я пытаюсь запустить автоматическое тестирование на примере приложения SAPUI5 с помощью Playwright (аналогично Puppeteer). Я пытаюсь прокрутить страницу до конца. Однако эта функция работает на других веб-сайтах, кроме приложений SAPUI5.

Мой код отображается ниже:

const playwright = require('playwright');

(async () => {
  for (const browserType of ['chromium']) {
    const browser = await playwright[browserType].launch({
        headless: false
    });
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto("https://sapui5.hana.ondemand.com/test-resources/sap/m/demokit/orderbrowser/webapp/test/mockServer.html?sap-ui-theme=sap_fiori_3");

    await page.setViewport({
        width: 1200,
        height: 500
    });

    await page.waitFor(5000);

    await page.waitForSelector("#__item0-__clone9-content");


    await scrollOnElement(page,"#__item0-__clone9-content",0,300);
  }
})();

async function scrollOnElement(page,selector,x,y) {
    await page.evaluate(([selector, x, y]) => {
      const element = document.querySelector(selector);
      console.log(element);
      element.scroll(x, y);
    }, [selector, x, y]);
}

Это потому, что SAP предоставляет собственную прокрутку вместо использования прокрутки окна браузера? Если да, могу ли я как-нибудь его отключить?

1 Ответ

2 голосов
/ 19 июня 2020

Element.scroll() как-то тоже не работает в Chrome DevTools. Подходит ли Element.scrollIntoView() для вашего варианта использования?

Тогда это будет примерно так:

// @ts-check
const playwright = require('playwright');

(async () => {
  const browser = await playwright.chromium.launch();
  const context = await browser.newContext({
    viewport: {
      width: 1200,
      height: 500
    }
  });
  const page = await context.newPage();
  await page.goto("https://sapui5.hana.ondemand.com/test-resources/sap/m/demokit/orderbrowser/webapp/test/mockServer.html?sap-ui-theme=sap_fiori_3#");

  await page.waitForSelector("#__item0-__clone9-content");

  await scrollOnElement(page, "#__item0-__clone9-content");
  await page.screenshot({ path: "screenshot.png" })
})();

async function scrollOnElement(page, selector) {
  await page.$eval(selector, (element) => {
    element.scrollIntoView();
  });
}

Interactive: https://try.playwright.tech/?s=jp8ng

...