TestCafeでページスクロールしてキャプチャしたい

TestCafeでwindow.scrollBy()などの呼び出し方がわからなかったので、そのメモです。
ClientFunctionをimportしていけました。

test.js
import {Selector, ClientFunction} from 'testcafe';

fixture('スクショ')
  .page('https://github.com/DevExpress/testcafe')


test('ページ下部までスクショ撮り続ける', async t => {

  const scrollHeight = ClientFunction(() => window.scrollBy(0, window.innerHeight));
  const getMaxHeight = ClientFunction(() => document.body.clientHeight );
  const getViewHeight = ClientFunction(() => window.innerHeight );
  let maxHeight = await getMaxHeight();
  let viewHeight = await getViewHeight();

  for (let index = 0; viewHeight < maxHeight + viewHeight; index++) {
    await t.takeScreenshot(`capture${index}.png`);
    maxHeight = maxHeight - viewHeight;
    await scrollHeight();
  }
})

ClientFunctionでなく、eval( )でもいけるっぽい。

const scrollBy = await t.eval(() => window.scrollBy(0, window.innerHeight));

あとは以下のようなコマンドでスクショが取れます。

testcafe chrome ./test.js --screenshots ./

実行してから気づいたけども、C#で書いたseleniumのキャプチャの方がスピードが早かった気がする

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.