イベントが送信された回数を追跡するにはどうすればよいですか?

アソトス

ページが読み込まれたときにイベントが1回だけ送信されるかどうかを確認するために、jestとpuppeteerを使用してコードを作成しています。

同じイベントが再度送信された場合にメッセージを返すために、puppeteerを使用してコードを作成する際に問題が発生します。

const eventTest = async (viewEndpoint) => {
        await Promise.race([
            page.goto(url),
            await page.waitForResponse(viewEndpoint)
            .then(await page.waitForResponse(viewEndpoint, 10000))
            .then(console.log("Event loaded more than once"))       
        ])
    }

上記のコードは私が今まで試したものです。viewEndPoit指定されたURLのイベントエンドポイントです。最初にページに移動し、次にpage.waitForResponseイベントエンドポイントで使用し、すべてが正しければthen、もう一度実行するために使用します。そして、イベントが再び発生した場合は、メッセージをロードします。

console.logイベントが1回しか読み込まれなくても、機能せず、常に戻ります。

たとえば、ホームページが読み込まれると、homeというイベントが送信されます。devtoolsネットワークタブで確認できます。私の目標は、イベントが[ネットワーク]タブに2回表示された場合に、console.logを返すことです。

トーマス・ドンドルフ

最も明白な方法は、単に関数をpage.waitForResponse2回使用し、Promise.raceその後で関数を内部で使用することです。

コードサンプル

const waitForEventTwice = async () => {
  try {
    await page.waitForResponse(viewEndpoint, { timeout: 10000 });
    await page.waitForResponse(viewEndpoint, { timeout: 10000 });
    console.log('Yes it happened twice.');
  } catch (err) {
    console.log('No, it didn't, a timeout error happened instead');
    // You might want to "throw err" here depending on your use case
  }
}

await Promise.race([
    page.goto(url),
    waitForEventTwice(),     
]);

より洗練されたアプローチは、イベントが発生した回数をカウントアップすることresolveです。これにより、一瞬イベントをリッスンしないためにイベントを見逃すことはありません。

const waitForEventTwice = () => new Promise((resolve, reject) => {
  let counter = 0;
  page.on('response', function listener(response) {
    if (response.url() === '...') { // test if the response is the response you are looking for
      counter += 1;
      if (counter === 2) {
        // ...
        resolve(); // it happened
      }
    }
  });
  setTimeout(() => {
    server.removeListener('response', listener);
    // it did not happen
    // ...
    reject(); // or resolve() alternatively depending on your use case
  }, 2000);
});

await Promise.race([
    page.goto(url),
    waitForEventTwice(),     
]);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GAの追跡されたすべてのイベントをFirebaseAnalyticsにインポートするにはどうすればよいですか?

分類Dev

スクリプトが実行された回数を追跡するにはどうすればよいですか?

分類Dev

Azure App Insightで、App Centerから追跡されたイベントのプロパティを取得するにはどうすればよいですか?

分類Dev

イベントリスナーが追加されている場所を追跡するにはどうすればよいですか?

分類Dev

iOSでin_app_purchaseFirebaseイベントの追跡を停止するにはどうすればよいですか?

分類Dev

AngularJSでイベントを追跡するにはどうすればよいですか?

分類Dev

Wacom Tabletのホバーイベントを追跡するにはどうすればよいですか?

分類Dev

フィボナッチで各要素が計算された回数を追跡するにはどうすればよいですか?

分類Dev

jqueryで「回答」が表示/呼び出された回数を追跡するにはどうすればよいですか?

分類Dev

Anaconda(Conda)環境でpipがインストールされたパッケージを追跡するにはどうすればよいですか?

分類Dev

どのテキストエントリがクリックされたかを追跡するにはどうすればよいですか?

分類Dev

変数が値を変更した行を追跡するにはどうすればよいですか?

分類Dev

複数のピクセルでVASTイベントを追跡するにはどうすればよいですか?

分類Dev

デルファイのポイントを追跡するにはどうすればよいですか

分類Dev

失敗したSSHログイン試行を追跡するにはどうすればよいですか?

分類Dev

失敗したSSHログイン試行を追跡するにはどうすればよいですか?

分類Dev

成功したログインと切断を追跡するにはどうすればよいですか?

分類Dev

追跡されたが現在.gitignoreにあるファイルについてGitを「忘れる」にはどうすればよいですか?

分類Dev

動的に作成された入力の値を追跡するにはどうすればよいですか?

分類Dev

イベントが送信されたかどうかを確認するにはどうすればよいですか?

分類Dev

Bugzillaの変更された依存関係を追跡するにはどうすればよいですか?

分類Dev

gitから複製されたプロジェクトからバージョン追跡を削除するにはどうすればよいですか?

分類Dev

ミックスパネルのタイムイベントをプロパティで追跡するにはどうすればよいですか?

分類Dev

GoogleアナリティクスでGoogle視覚化チャートイベントを追跡するにはどうすればよいですか?

分類Dev

変更されていない(追跡された)ファイルをすべて一覧表示するにはどうすればよいですか?

分類Dev

アイテムの現在の視聴者数を追跡するにはどうすればよいですか?

分類Dev

プロパティ変更イベントを継承ラダーまで「追跡」するにはどうすればよいですか

分類Dev

フォームが送信されたときにonChangeイベントをトリガーするにはどうすればよいですか?

分類Dev

mixpanel-ruby gemを使用してイベントを追跡するにはどうすればよいですか?

Related 関連記事

  1. 1

    GAの追跡されたすべてのイベントをFirebaseAnalyticsにインポートするにはどうすればよいですか?

  2. 2

    スクリプトが実行された回数を追跡するにはどうすればよいですか?

  3. 3

    Azure App Insightで、App Centerから追跡されたイベントのプロパティを取得するにはどうすればよいですか?

  4. 4

    イベントリスナーが追加されている場所を追跡するにはどうすればよいですか?

  5. 5

    iOSでin_app_purchaseFirebaseイベントの追跡を停止するにはどうすればよいですか?

  6. 6

    AngularJSでイベントを追跡するにはどうすればよいですか?

  7. 7

    Wacom Tabletのホバーイベントを追跡するにはどうすればよいですか?

  8. 8

    フィボナッチで各要素が計算された回数を追跡するにはどうすればよいですか?

  9. 9

    jqueryで「回答」が表示/呼び出された回数を追跡するにはどうすればよいですか?

  10. 10

    Anaconda(Conda)環境でpipがインストールされたパッケージを追跡するにはどうすればよいですか?

  11. 11

    どのテキストエントリがクリックされたかを追跡するにはどうすればよいですか?

  12. 12

    変数が値を変更した行を追跡するにはどうすればよいですか?

  13. 13

    複数のピクセルでVASTイベントを追跡するにはどうすればよいですか?

  14. 14

    デルファイのポイントを追跡するにはどうすればよいですか

  15. 15

    失敗したSSHログイン試行を追跡するにはどうすればよいですか?

  16. 16

    失敗したSSHログイン試行を追跡するにはどうすればよいですか?

  17. 17

    成功したログインと切断を追跡するにはどうすればよいですか?

  18. 18

    追跡されたが現在.gitignoreにあるファイルについてGitを「忘れる」にはどうすればよいですか?

  19. 19

    動的に作成された入力の値を追跡するにはどうすればよいですか?

  20. 20

    イベントが送信されたかどうかを確認するにはどうすればよいですか?

  21. 21

    Bugzillaの変更された依存関係を追跡するにはどうすればよいですか?

  22. 22

    gitから複製されたプロジェクトからバージョン追跡を削除するにはどうすればよいですか?

  23. 23

    ミックスパネルのタイムイベントをプロパティで追跡するにはどうすればよいですか?

  24. 24

    GoogleアナリティクスでGoogle視覚化チャートイベントを追跡するにはどうすればよいですか?

  25. 25

    変更されていない(追跡された)ファイルをすべて一覧表示するにはどうすればよいですか?

  26. 26

    アイテムの現在の視聴者数を追跡するにはどうすればよいですか?

  27. 27

    プロパティ変更イベントを継承ラダーまで「追跡」するにはどうすればよいですか

  28. 28

    フォームが送信されたときにonChangeイベントをトリガーするにはどうすればよいですか?

  29. 29

    mixpanel-ruby gemを使用してイベントを追跡するにはどうすればよいですか?

ホットタグ

アーカイブ