From 0c4a18cb76b1667b4e06078b18fd209e9bcffa13 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Mon, 20 Sep 2021 01:59:50 -0400 Subject: [PATCH] Added example of handling lazy loading lists --- e2e/tests/examples/lazy-loading.yaml | 5 +++++ examples/lazy-loading.fql | 29 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 e2e/tests/examples/lazy-loading.yaml create mode 100644 examples/lazy-loading.fql diff --git a/e2e/tests/examples/lazy-loading.yaml b/e2e/tests/examples/lazy-loading.yaml new file mode 100644 index 00000000..d4501cc5 --- /dev/null +++ b/e2e/tests/examples/lazy-loading.yaml @@ -0,0 +1,5 @@ + +query: + ref: ../../../examples/lazy-loading.fql +assert: + text: RETURN T::LEN(@lab.data.query.result, 50) \ No newline at end of file diff --git a/examples/lazy-loading.fql b/examples/lazy-loading.fql new file mode 100644 index 00000000..2c77ce6d --- /dev/null +++ b/examples/lazy-loading.fql @@ -0,0 +1,29 @@ +LET doc = DOCUMENT('https://soundcloud.com/charts/top', { driver: "cdp" }) + +LET endSelector = '' +LET listSelector = '.chartTracks ul' + +WAIT_ELEMENT(doc, listSelector) + +LET list = ELEMENT(doc, listSelector) +LET initialCount = ELEMENTS_COUNT(list, 'li') +LET lastItem = 50 + +LET preload = ( + FOR i DO WHILE !ELEMENT_EXISTS(doc, '.chartTracksEnd') + LET initial = i > 0 ? SCROLL_BOTTOM(doc) && WAIT(500) && SCROLL_TOP(doc) && false : true + + RETURN NONE +) + +WAIT_ELEMENT(list, FMT('li:nth-child({})', lastItem)) + +FOR track, i IN ELEMENTS(list, 'li') + RETURN { + num: i + 1, + artist: TRIM(INNER_TEXT(track, '.chartTrack__details .chartTrack__username')), + track: TRIM(INNER_TEXT(track, '.chartTrack__details .chartTrack__title')) + } + + +