あなたの環境について教えてください:
問題を再現する手順は何ですか?
問題を再現するコードは次のとおりです。
const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch({
headless: false,
slowMo: 250
});
const page = await browser.newPage();
page.setViewport({ width: 1280, height: 700 });
await page.goto('https://www.labs.octasimo.com/puppeteer/test-page-type-delay.html', {
waitUntil: 'networkidle0'
});
await page.type('.firstname', 'Mickey', {delay: 10});
await page.type('.lastname', 'Mouse', {delay: 10});
await page.waitFor(5000);
await browser.close();
}
run();
期待される結果は何ですか?
その人形遣いは、 delay
page.type
メソッドで渡されたdelay
オプションを尊重します。
代わりに何が起こりますか?
delay
オプションが渡されたpage.type
の方法で上書きされますslowMo
に渡されるオプションpuppeteer.launch
方法。
@octasimo 、これを提出してくれてありがとう。
slowMo
オプションにも例外はありません。これにより、pptrとブラウザ間のすべてのやり取りが遅くなります。 予測可能であり、コードベースを単純に保つために、この方法を維持したいと思います。
今のところこれを閉じます。 より多くの需要がある場合は、後でこれを再検討できます。
@aslushnikov
個別の遅延を許容する必要があると思います。 ブラウザはCPUごとに動作が異なります。特定のブラウザの動作を遅くして、同じ結果が得られるようにする機能があると便利です。
個別の遅延を許容する必要があると思います。 ブラウザはCPUごとに動作が異なります。特定のブラウザの動作を遅くして、同じ結果が得られるようにする機能があると便利です。
@sojungkoこれはPuppeteerAPIの上でポリフィル可能です。 ES6 Proxy
を使用してPuppeteerのオブジェクトをラップし、メソッド呼び出しの前後にタイムアウトを挿入できます。
最も参考になるコメント
@aslushnikov
個別の遅延を許容する必要があると思います。 ブラウザはCPUごとに動作が異なります。特定のブラウザの動作を遅くして、同じ結果が得られるようにする機能があると便利です。